RESTful Service Help

Nouns
ParameterDescription
Index Serivce Main Page
Misc Miscellaneous options
List List all Published Reports
ListDashPage List all Dashboard Pages
RssList List all Published Reports as a RSS Feed
QueryDetails Get the full Published Query Details or just the Query Item
DataSource Get raw data or schema data in the specified format e.g dfmt=xml or dfmt=jsonarray
DataSourcePost Same as DataSource but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
Report Normal entry point for all Reports. Then displays Report with prompts if any exist and uses Publisher default settings
ReportPost Same as Report but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
Table Displays the report in Table form with no prompting
TablePost Same as Table but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
TableGrid Displays the report in Table Grid where columns can be grouped on the Header
TableGridPost Same as TableGrid but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
TableBasic Displays the report in simple HTML Table form with no prompting (no javascript)
TableBasicPost Same as TableBasic but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
TableSilverlight Displays the report using the default Silverlight gridview or if a custom xap is present it uses that
TableSilverlightPost Same as TableSilverlight but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
Chart Displays data as a Chart
ChartPost Same as Chart but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
Pivot Displays data as a Pivot Table
PivotPost Same as Pivot but uses the POST method. In this way very long URLs can be submitted to get around the length limitations
PageHtml Displays data as HTML using the Publisher Page Designer
PageHtmlPost Same as PageHtml but uses the POST method.
PagePdf Displays data as PDF using the Publisher Page Designer
PagePdfPost Same as PagePdf but uses the POST method.
PageExcel Displays data as Excel using the Publisher Page Designer
PageExcelPost Same as PageExcel but uses the POST method.
PageWord Displays data as MS Word using the Publisher Page Designer
PageWordPost Same as PageWord but uses the POST method.
PageImage Displays data as TIFF image using the Publisher Page Designer
PageImagePost Same as PageImage but uses the POST method.
MenuTree Display the dataset as Hierarchy Tree that can open URL links in a pane to the right
MenuTreeSlide Display the dataset as Hierarchy Tree that can open URL links into a sliding Page that is Mobile friendly
MenuHorizontal Display the dataset as Application Type Horizontal Menu that can open URL links in a pane to below
MenuHorizontalSlide Display the dataset as Application Type Horizontal Menu that can open URL links into a sliding Page that is Mobile friendly
MenuVertical Display the dataset as Vertical Type Menu that can open URL links in a pane to the right
MenuVerticalSlide Display the dataset as Vertical Type Menu that can open URL links into a sliding Page that is Mobile friendly
MenuPanel Display the dataset as Vertical Type Menu Panel that can open URL links in a pane to the right
MenuPanelSlide Display the dataset as Vertical Type Menu Panel that can open URL links into a sliding Page that is Mobile friendly
MenuScrollView Display the dataset as a Mobile friendly Scroll View where each row becomes a sliding page with a Title bar and the URL as the content
MenuTabTop Display the dataset in Tabs positioned at the top with content below. The dataset defines the Tab Text, ICON, URL or HTML Content
MenuTabLeft Display the dataset in Tabs positioned on the left and content on the right. The dataset defines the Tab Text, ICON, URL or HTML Content
MenuTabRight Display the dataset in Tabs positioned on the right and content on the left. The dataset defines the Tab Text, ICON, URL or HTML Content
MenuTabBottom Display the dataset in Tabs positioned at the bottom with content above. The dataset defines the Tab Text, ICON, URL or HTML Content
Rss Displays data as a RSS Feed
Atom Displays data as a Atom Feed
DashPage Dashboard Page
ListEntryForms Entry Forms - Show a list of all Data Entry Forms
EntryForm Entry Forms - Display Data Entry Form for a single record based on Url parameters
EntryFormPost Entry Forms - inserting and updating data using a Url POST (Optional TrippleDES encrypted)
EntryFormSimpleUpdate Entry Forms - insert and updating a record using a Url GET
EntryFormDelete Entry Forms - delete a record using a Url POST (TrippleDES encrypted)
EntryFormDeleteKey Entry Forms - delete a record based on it's unique key using a Url POST (Optional TrippleDES encrypted)
EntryFormSimpleDeleteKey Entry Forms - delete a record based on it's unique key using a Url GET
Process Execute Server side process of DataModel by passing parameters on the URL and getting a return status
ProcessPost Execute Server side process of DataModel by POSTing parameters and getting a return status
SchedulerTask Execute Server Scheduler Task by url parameters and getting a return status
SchedulerTaskPost Execute Server Scheduler Task by POSTing parameters and getting a return status
Frame Wrap the source url address up in an iframe
InLine Return the url content as a html web page
Dashboard Collection of various Gauges, Meters, QR Codes and Dials for Dashboards
LookupDate Displays Date Lookup
Image Get named get small or large icons from a library of png images or return a picture by passing in a base64 buffer
ImageCSS Get named CSS Font icons from a Kendo and Font Awesome libraries
ImageBar Returns a gif or png image that is a bar between the min and max values.
ImageSparkline Returns a gif or png image that is a Sparkline line or bar sequence between the min and max values.
ImageGradient Returns a gif or png image of the size and gradient specified
ImageText Returns text as a png image with the specified colors and ratation e.g vertical text
LanguageTrans Translate text into the specified lanaguage
Resources Get Resource Files such as Javascript libraries or html content that is organised into folders
File Get various files held in the DataModel Content or the Resources Folders
FilePost Save, Update and Delete files under the folders specfied in Site Setup / Product Settings / Scheduler Files in Folder or Secure Folders
Content Get DataModel Browser Content File - This is can be various html pages and their resources
ResourceGet Get Resource Files with parameter options
ConvertToPDF Convert Report to PDF document (Requires PDF tool to be installed)
EarthMap Google Earth. Shows the latitude and longitude with a placemart and description
UrlRegisterPost When an URL address becomes too long for IE length limitations of around 2040 chars you can register the params
UserLogon User Logon
UserLogoff User Logoff
UserValidate Validate user details and return user session id
UserSessionCheck User session id check
Authorization Header User tokens and Security
Custom CSS Custom CSS files
InstallClient Install XBAP Client Tools web page
CertificateGet Get the trusted XBAP Certificate
XBAP Application Use Query Builder, Explorer, Publisher in the Web Browser
ServiceStartTime Get the time at which the Service was started
ServiceStatus Get the general service status like the current number of sessions still cached by the service
ServiceCheck Check that all Service the database connections are working. returns OK otherwise ERROR: xxx

List
ParameterDescription
group=[groupCode] Only show the Published reports that contain these group chars
search=[text] Only show the Published reports that contain the text anywhere in the details (case insensitive)
author=[text] Only show the Published reports whose Author details contain the text (case insensitive)
product=[productCode] Only show the Published reports whose Product Code equals the values specified
title=[text] Change the default Title
description=[text] Change the default Description
showHeader=[1|0] Show or Hide Row Header
showDetails=[1|0] Show or Hide Published Report details on the right. Defaults to &showDetails=yes
showMenu[1|0] Show or Hide the right click menu
pageSize=[1..(n)] Set the number of rows per page. The default is 50

QueryDetails
ParameterDescription
Get the full Published Query Report details as XML format. Note that user security details will be blanked out

If you require just the Query details of the Published Query then use &dsection=query

http://sldemo8911.cloudapp.net/mdService1Rest/QueryDetails/?query=ADVW.ChartArea&dsection=query
query=[Group.Code] The Published Report Group and Code e.g /QueryDetails/?query=ADVW.Sample
dsection=query Get just the Query Item part of the Published Report e.g /QueryDetails/?query=ADVW.Sample&dsection=query

Report
ParameterDescription
query=[Group.Code] The Published Report Group and Code e.g /Report/?query=ADVW.Sample

For a list of Published Reports use query=publishlist and for Entry Forms use query=entrylist

Also queries don't always have to be published in Publisher they can be inline where their contents are encrypted and compressed. To build an inline Query use Query Builder and Preview, then select Save - Query as URL

e.g /Report/?query=_Qr1WQs%2f3aKmErkawx..............104ba7d4fZ

showTitle=[1|0] Show Report Title. Defaults to Publisher settings
showDesc=[1|0] Show Report Description. Defaults to Publisher settings
showHeader=[1|0] Show Report Header. Defaults to Publisher settings
showTitlePrompt=[1|0] Show Report Prompt Title Bar. Defaults to Publisher settings
showPageHeader=[1|0] Show Report Branding Header. Defaults to Publisher settings
showPageHeaderTabs=[1|0] Show Report Branding Header when Tab Splits are used. Defaults to Publisher settings
showPageFooter=[1|0] Show Report Branding Footer. Defaults to Publisher settings
showLegend=[1|0] Show Chart Legend. Used with Charts are involved.. Defaults to Publisher settings
showTooltip=[1|0] Show Tooltips on Chart sections default is Yes
showMenu=[1|0] Show or Hide the right click menu
showMenuDrillOnly=[1|0] Show only the Drilldown menus on right click menu
showMenuSaveAs=[1|0] Show or Hide the 'Save As' right click menu
showMenuSaveAsPDF=[1|0] Show or Hide the 'Save As PDF' right click menu (Only valid if PDF tool is installed)
showMenuRefresh=[1|0] Show or Hide the 'Refresh' right click menu
showMenuPrint=[1|0] Show or Hide the 'Print' right click menu
showMenuNav=[1|0] Show or Hide the Pivot Navigation right click menu options
showMenuSignOut=[1|0] Show or Hide the User Sign Out right click menu options
showMenuOther=[1|0] Show or Hide the 'Other' right click menu
showMenuOptions=[1|0] Show or Hide the 'Options' right click menu
showRowSelect=[1|0] Override the show row select logic in Tables
showRowHover=[1|0] Override the show row hover select logic in Tables
showContextMenu=[1|0] Override the table context Menu. Touch devices show menu on row click while PC devices show on right click. You can suppress or force it to display on single click
showFilter[Name]=[1|0|single|dropdown] Override the Filter logic to hide or show a Prompt Filter by name e.g &showFilterAccCode=0 This will hide the Filter
Table Grid writebacks use the Datamodel field properties to auto generate the filters in the prompt area based on unique keys and other settings
To add additional filters to the auto generated list use &showFilterName=1 or for single filters use &showFilterName=single
or for a dropdown multiple select filter use &showFilterName=dropdown
The Name part of will be the Datamodel code for the field e.g &showFilterAccCode=1 or &showFilterCategory=1
lockFilter[Name]=[1|0] Override the default Filter logic to Lock or unlock a Prompt Filter by name so the user cannot change the value e.g &lockFilterAccCode=1 This will lock the Filter
hideOutput=[Name+Name2+..Name(n)] Hide outputs based on their output names e.g &hideOutputs=Company or &hideOutputs=Company+Department
showOutput=[Name+Name2+..Name(n)] Show outputs based on their output names e.g &showOutputs=Company or &showOutputs=Company+Department
title=[text] Change the default Title
description=[text] Change the default Description
promptTitle=[text] Change the Prompt default Title
promptTitleColor=[color] Change the Prompt Title Background Color &promptTitleColor=#CC0000 or promptTitleColor=red
promptSuppress=[1|0] Suppress the Prompting at the top of the report and go straight to the default report media which is Table, Chart or Pivot etc
promptLock=[1|0] Lock all the filters in the Prompt so the user can see them but not change them
promptSubmitByDefault=[1|0] Submit the filter values by default
promptCollapse=[1|0] Collapse or Expand the Prompting area
promptOnly=[1|0] Use the Prompt Section without showing any of the Report Section below. Useful for dashboards where you want a Prompt section across the top
lookupUseWin=[1|0] Show lookups in a overlay dialog window instead the area below the prompt section
tabCacheDef=[1|0] When Tabs are present in a Layout the default is to cache the content. This can be override the default so the content is always refreshed on selection use &tabCacheDef=0
tabCached[1..(n)]=[1|0] Turn on or off the Tab caching of content by it's index position where tabCached3=1 is the third tab e.g. &tabCached2=0
tabHide[1..(n)]=[1|0] Hide / Remote the Tab based on it's index position where tabHide3=1 is the third tab e.g. &tabHide2=1
tabActive=[1..(n)] Set a tab as active based on it's index position where tabActive=3 is the third tab e.g. &tabActive=5
tabSecHeight=[1..(n)] When using splits the tab section height is auto calculated and the content height is taken from that estimate. If you find the content is still cropped with scrollbars you can set your own height for the tab section in pixels e.g. &tabSecHeight=100
submitLabel=[text] Override the default Sumit button Label &submitLabel=Execute
drowlimit=[0..(n)] Override or set the data row limit. Defaults to Publisher settings &drowlimit=25000
connTimeout=[0..{milliseconds}] Control the data retrieve timeout in milliseconds &connTimeout=99999. Defaults to 0
refreshSec=[0..{seconds}] Force the page to fresh after specified seconds &refreshSec=30. Defaults to 0
pageSize=[1..(n)] Number of rows per Page. Defaults to Publisher settings &pageSize=100
openInWin=[_blank|_parent|_self|_top|name] Override the default behaviour of opening Drill Through links in a new Window. For example to open a Drill Through in the same frame use &openInWin=_self and &openInWin=_top to replace the whole page in the same tab

width=[0..(n)px] Override the width defaults defined in Publisher e.g. width=500px
height=[0..(n)px] Override the height defaults defined in Publisher e.g. height=500px
bcolor=[red|#00FF00..] Override the background color defined in Publisher e.g. bcolor=blue or bcolor=%23FFEEEE
css=[CSS_Styling] Inject CSS styling into the report and it's sub content
This is used for example to set the default print css styling @page etc. when using Chrome Headless in Scheduler
e.g.
&css=@page{size:A4 landscape; margin:auto;}
&css=div{color:red;}
&css=body{zoom:50%;}
overflow=[auto|visible|hidden|scroll] Control the HTML overflow, useful when doing dashbaords and Scroll bars are appearing &overflow=hidden. Defaults to auto http://www.w3schools.com/cssref/pr_pos_overflow.asp
accesscode=[Code] Published Report can have a security Access Code in addition to the Sign security &accesscode=123456
rtype=[typecode] Override the default reporting media type valid values are
table, tablebasic, tablegrid, grid, tablecustom, tablesilverlight, silverlight, chart, pivot,
page, pagepdf, pdf, pagehtml, html, pageword, word, pageexcel, excel, pageimage, image,
menu, menuhorz, menuhorzslide, menuvert, menuvertslide, menupanel, menupanelslide, menutree, menutreeslide, menutabtop, menutabbottom, menutableft, menutabright, menuscrollview
rss and atom
rowSelectFilter=[1|0] Turns the row selection of a Report into a Filter driver of Reports in other sections of Layout.
Filters will be syned where the Driver Report Output names match the Filter names in the other Reports
rowSelectIgnor=[1|0] This is used in combination with rowSelectFilter to specifiy that a layout section or Tile should not be receive Filters and be refreshed by a Row Selection of the Driver Report
language=[en|de|es|ja...] Override the default user account language. Defaults to English if no translations exist
language=es
flt[Name]=[Value] Set the Prompt Filter Value for a Published Report's named Filter. e.g fltAccountCode=12345

If you want to redirect the values of another parameter into the this filter use the _redirect_[name] command tag.

&fltAccountCode=_redirect_id&id=AB123

In this example the value of &id=AB123 is transfered to &fltAccount so that it returns AB123

flt[Name]_2=[Value] Set the Prompt Filter to Value for a Published Report's named Filter. e.g fltAccountCode_2=zzzzz
fltSplit=[FilterName] Override the split tabs function by naming the Filter you want to split by (Reserved filter name). e.g fltSplit=Departments
fltMediaType=[FilterName] Override the default report media type (Reserved filter name).
some valid types are PDF,PagePDF,Html,PageHTML,Table,TableBasic,Chart,Pivot,Silverlight
e.g fltMediaType=PDF
style=[Value] Override the colours and border styles of Table Reports. Use '-' to separate the options

for example
&style=grey-flat
&style=dark-red-flat
&style=solid2-green-borders

There are three basic parts [solid]-[colour]-[borders] where all categories are options and valid values are
[solid] = solid,solid2
[colour] = white,grey,black,red,yellow,orange,blue,sky,green,brown,purple,dark-grey,dark-red,dark-yellow,dark-orange,dark-blue,dark-sky,dark-green,dark-brown,dark-purple
[border]= flat,flat2,flat3,borders

[solid] options will turn off alternating row colours so the table is a solid block of colour, solid2 will have a different Header,Total colour
[colour] options will set the colour of the table, when combined with [dark] will select the darker version of the colour
[borders] options will turn on or off borders [flat] no borders, [flat2] no borders except table, [flat3] table borders only and [borders] turn on all borders
productcode=[Value] When redirecting a query's dataset to a Writeback table this parameter is used in conjunction with tablecode=xxx
supercode=[Value] When redirecting a query's dataset to a Writeback table this parameter is used in conjunction with productcode=xxx. Only use if the product has a Super field
tablecode=[Value] When redirecting a query's dataset to a Writeback table this parameter is used in conjunction with productcode=xxx
glColor=[ReportGroup,Group2,Group3] Used the Custom Colors defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified value
&glColor=FINANCE
&glColor=FINANCE,HR,GL
glChartColor=[ReportGroup,Group2,Group3] Used the Chart Custom Colors defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified &glChartColor=FINANCE
glCSS=[ReportGroup,Group2,Group3] Used the Custom CSS styling defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified value &glCSS=FINANCE
glHeader=[ReportGroup,Group2,Group3] Used the Custom Header defined in the current Published Report and apply it to all Published Reports Groups prefixed with the specified value &glHeader=FINANCE
glFooter=[ReportGroup,Group2,Group3] Used the Custom Footer defined in the current Published Report and apply it to all Published Reports Groups prefixed with the specified value &glHeader=FINANCE

DataSource
ParameterDescription
Please note that dates are returned in yyyy-mm-dd format and binary data such as Pictures are encoded into base64 strings
query=[Group.Code] The Published Report Group and Code e.g /DataSource/?query=ADVW.Sample for a list of Published Reports use query=publishlist and for Entry Forms use query=entrylist
dfmt=xml Get data as XML
dfmt=xml2 Get data as detailed XML
dfmt=xlsx Get data as Excel xlsx format
dfmt=csv Get data in CSV format with UT8 encoding. The default is comma delimited with Quotes and NewLine.
There are also options like &csvDelimiter=, and &csvQuotes= and &csvNewLine=
dfmt=csv_ansi Get data in CSV format with server ANSI encoding. The default is comma delimited with Quotes and NewLine.
There are also options like &csvDelimiter=, and &csvQuotes= and &csvNewLine=
dfmt=csv_bom Get data in CSV format with server with a BOM header for UTF-8 encoding which works with Excel. The default is comma delimited with Quotes and NewLine.
There are also options like &csvDelimiter=, and &csvQuotes= and &csvNewLine=
csvDelimiter=[,|comma|tab|space|fixed|char] The CSV delimiter which defaults to comma e.g. &csvDelimiter=tab

If a fixed width CSV is required then suffix the output names with _FIX## where ## is the length of the column.
If the suffix is not set then the widths are auto calculated based on the data types and length.

e.g Account_FIX75 or Amount_FIX24
csvQuotes=[|blank|quotes|char] The CSV data quote protector which defaults to double quotes e.g. &csvQuotes= or &csvQuotes=blank or &csvQuotes='
csvDecSep=[,|.|dot|comma|char] The CSV number decimal separator with defaults to . or dot For example when dealing with French or Dutch use &csvDecSep=comma
csvNewLine=[crlf|cr|lf|lfcr|char] The CSV row new line chars which defaults to crlf e.g. &csvNewLine=cr or &csvNewLine=crlf
dfmt=json Get data in JSON format. Note if there is an array of data you should use jsonarray instead or put square brackets around the result yourself

{"f1": "Foo", "f2" : 1234.76, "f3":"2004/07/31", "f4": "2004/07/31 10:45:33"}
dfmt=jsonarray Get data as a JSON array. Note if you want to get the Published Report or Query schema and property details see the dcat parameter.
Also see dfmt=jsonp for callbacks and jsondates=iso8601 for date formats

[ {"f1": "Foo", "f2" : 123.88, "f3": "2004/07/31"} , {"f1": "Foo2", "f2": 1567.23, "f3": "2004/07/31", "f4": "2004/07/31 10:45:33"} ]

To get the jsonarray but with field names based on the Query Output names add &dcat=UseNames

http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query=publishlist&dfmt=jsonarray&dcat=UseNames&jsondates=iso8601

Get a list of Published Reports

http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query=publishlist&dfmt=jsonarray

 

Get a list of Published Reports for group ADVW

http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query=publishlist&dfmt=jsonarray&group=ADVW


If Totals and Sub Totals are required in the Data use the &dtotals=1&drowcat=1 

An additional column called fcat will appear when drowcat=1 is used and this column will have metadata about the row category {T:} = Total Row  {S:1} Subtotal level 1 {S:#} Subtotal level # etc
formatting tags will also appear and these are used for conditional formatting of background colors, fonts and values etc
_format:coltext[1,1]=Sub Total|clear[4,4]
These start with _format: and are separated by a | char

{"fcat":,"f1":2004,"f2":0,"f3":"north america","f4":"2004\ />01","f5":null,"f6":null,"f7":null},
{"fcat":,"f1":2004,"f2":1,"f3":"North America","f4":"2004\/03","f5":null,"f6":null,"f7":null},
{"fcat":{S:2}_format:coltext[1,1]=|coltext[4,4]=|coltext[5,5]=|coltext[8,8]=,"f1":null,"f2":13,"f3":"North America","f4":null,"f5":null,"f6":0,"f7":0},
{"fcat":{S:1}_format:coltext[3,3]=|coltext[4,4]=|coltext[5,5]=|coltext[8,8]=,"f1":2004,"f2":26,"f3":null,"f4":null,"f5":null,"f6":0,"f7":0},
{"fcat":{T:}_format:coltext[1,1]=Sub Total|clear[3,3]|clear[4,4]|clear[5,5]|clear[8,8],"f1":null,"f2":134,"f3":null,"f4":null,"f5":null,"f6":0,"f7":0},
{"fcat":{T:},"f1":Grand Total,"f2":134,"f3":null,"f4":null,"f5":null,"f6":0,"f7":0}

dfmt=jsonp Get data as a callback JSONP array.
You can specify the callback function name by using &jsonpfunc=MyfuncName

if jQuery is being used the parameter callback parameter is also respected

func( [ {"f1": "Foo", "f2" : 1200.76, "f3": "2004/07/31"} , {"f1": "Foo2", "f2": 653.64, "f3": "2004/07/31"} ] )


http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query=publishlist&dfmt=jsonp&dcat=UseNames
jsondates=iso8601|iso9601m|js|jsunix|rfc2822|simple Specifiy the JSON date time format to use e.g. jsondates=unix
If this parameter is not set then date and date time data will be returned using the default format of "YYYY/MM/DD" or "YYYY/MM/DD HH-MM-SS"
If a invalid value is passed then it will default to iso8601

jsondates=
{"f1":"2018/05/27", "f2":"2018/05/27 09:54:36"}


jsondates=iso8601
{"f1": "2018-05-27T00:00:00Z", "f2": "2018-05-27T08:56:49Z"}


jsondates=iso8601m
{"f1": "2018-05-27T00:00:00.000Z", "f2": "2018-05-27T08:56:49.761Z"}


jsondates=rfc2822
{"f1": "Sun, 27 May 2018 00:00:00 GMT", "f2":"Sun, 27 May 2018 10:54:23 GMT"}


jsondates=js
{"f1": new Date(2018,4,27) , "f2": new Date(2018,4,27,9,23,17,761)}


jsondates=jsunix
{"f1": new Date(1527350400000), "f2": new Date(1527384315904)}


jsondates=simple
{"f1":"2018-05-27", "f2":"2018-05-27 09:05:48"}


drowcat=[1|0] Show the Row Category meta data that holds information about if the Row is a Total, Sub Total and also any conditional formatting details

See the section on dfmt=jsonarray for an example

[
{"fcat":,"f1":"2004\/06","f2":6728034.9873,"f3":487097.5517,"f4":152218.0362},
{"fcat":,"f1":"2004\/07","f2":56178.9223,"f3":4067.2504,"f4":1271.0419},
{"fcat":{T:}_format:coltext[1,1]=Total:,"f1":null,"f2":140707584.8246,"f3":10186974.4602,"f4":3183430.2518}
]

dfmt=text Get data in Text format, uses Tab as separator and New Line
dfmt=text2 Get data in Text format including schema information, uses Tab as separator and New Line

Schema format is basically attribute1=value|attribute2=value|..attribute(n)=value separated by tabs

UniqueCode=/TotDue:Sum|DataTypeBase=Number|DataType=Currency|ShowTotal=Sum|Format=|Other=|Caption=Total Due|Header=Sales

dfmt=bzip2 This is basically the same format as dfmt=text2 but the data is bzip compressed to reduce the size. This can speed up download times by quite a bit on large datasets.

public static string DecompressMemoryBZip2(byte[] gzBuffer)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream(gzBuffer);
ms.Position = 0;
SharpCompress.Compressor.BZip2.BZip2Stream zip = new SharpCompress.Compressor.BZip2.BZip2Stream(ms, SharpCompress.Compressor.CompressionMode.Decompress);
System.IO.MemoryStream outStream = new System.IO.MemoryStream();
int ch = zip.ReadByte();
while (ch != -1)
{
outStream.WriteByte((byte)ch);
ch = zip.ReadByte();
} outStream.Position = 0;
return System.Text.Encoding.UTF8.GetString(outStream.ToArray(),0,(int)outStream.Length);
}

dfmt=cache Used to force a cache dataset to refresh
dcat=PublishProperties Get the various Properties of the Published Report in the specified Format jasonarray, csv etc instead of the Data.
e.g. &dfmt=jasonarray&dcat=PublishProperties

The Properties will included will be things like the Report Title, Formatting, Colors and URL links to the other details like where to get the data or Query schema details.

The result set will contain just two columns "code" and "value"

[{"code":"reporcodeunique","value":"test.xyz"},
{"code":"reporCode","value":"Test"},
{"code":"reporGroup","value":"XYZ"},
{"code":"reportEnabled","value":"true"},
{"code":"reportDefaultType","value":"Table"},
{"code":"reportLanguageCode","value":"ja"},
{"code":"reportCultureCode","value":"ja-JP"},
{"code":"reportTitleMenu","value":"Title Goes Here"},
{"code":"reportTitleReport","value":"15/04/2012 Report Table Title"},
{"code":"reportTitleAlign","value":"Center"},
{"code":"reportTitleFontSize","value":"21.75"},
....
}]


dcat=QueryFilters Get the various Query Filter Properties of the Published Report in the specified Format jasonarray, csv etc instead of the Data.
e.g. &dfmt=jasonarray&dcat=QueryFilters

The Properties will included will be things like the Filter Name, Description, Data Type and URL links to the data and Lookups

[{"codePath":"/Name","name":"Name","description":"Name","dataTypeBase":"String","dataType":"String","isSingleValuesOnly":"False","isMandatory":"False","isPassword":"False","cultureCode":"en-US","defaultValueFrom":"<\u003d","defaultvalueto":"zzzz",
"urlLookup":"http://sldemo8911.cloudapp.net/mdService1Rest/Table/?query\u003dDrillZeros&qmode\u003dlookup&usid\u003df097b22e9a4b4b98b4c3a2a580680763Z&lookupcode\u003dfltName",
"urlLookupDataSource":"http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query\u003dDrillZeros&qmode\u003dlookup&usid\u003df097b22e9a4b4b98b4c3a2a580680763Z&lookupcode\u003dfltName",
"urlLookupDataSourceJsonArray":"http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query\u003dDrillZeros&qmode\u003dlookup&usid\u003df097b22e9a4b4b98b4c3a2a580680763Z&dfmt\u003djsonarray&lookupcode\u003dfltName"},

....
}]
dcat=QueryOutputs Get the various Query Output Column Properties of the Published Report in the specified Format jasonarray, csv etc instead of the Data.
e.g. &dfmt=jasonarray&dcat=QueryOutputs

The Properties will included will be things like the Output Id, Code, Description, Data Type, Grouping and Formatting details

http://sldemo8911.cloudapp.net/mdService1Rest/DataSource/?query=Group.Code&dfmt=xml&dcat=QueryOutputs

[{"Id":"f1","code":"/HirDat:DateYearMonth","dataTypeBase":"String","dataType":"String","description":"Hire Year/Month","header":"","group":"true","showNulls":"false","showTotals":"None","format":"","formatOptons":"","attributes":"","other":""},
{"Id":"f2","code":"BirDat","dataTypeBase":"Date","dataType":"Date","description":"Birth Date","header":"Employee","group":"false","showNulls":"false","showTotals":"None","format":"{0:dd/MM/yyyy}","formatOptons":"","attributes":"","other":""},
{"Id":"f3","code":"/Name","dataTypeBase":"String","dataType":"String","description":"Name","header":"Employee","group":"false","showNulls":"false","showTotals":"None","format":"","formatOptons":"","attributes":"","other":""},
{"Id":"f4","code":"/VacHou","dataTypeBase":"Number","dataType":"Integer","description":"Vacation Hours","header":"Employee","group":"false","showNulls":"false","showTotals":"None","format":"{0:#,###,##0.0;(#,###,##0.0)}","formatOptons":"[ShowNegAsRed]","attributes":"","other":""}
]


Id:                 The unique column ID that is used to map to output columns in the dataset

code:             Unique code for output column


public enum dataTypeBase
{
    None, String, Number, Date, Time, Binary, Other
}
public enum dataType
{
   None, String, Integer, Decimal, Currency, Boolean, Percentage, Date, DateTime, Time, TimeSec, Period, Binary, BinaryPicture, BinaryDocument, BinarySound, BinaryVideo, GUID, URL, HTML, Icon
}
public enum showTotals
{
   Auto, None, Sum, Average, Count
}

description:    The column description

header:          The column header description  (not used by most reports

showNulls:     If true null values are displayed as <null> instead of blank

formatOptons:

[ShowNegAsRed]            Show Neg Numbers as Red
[HideZeros]                     Hide Number if Zero
[NumSepDecReversed]    When Spanish, French etc the comma and decimal separator should be reversed 10,123.56 => 10.123,56

format

  Numbers                       {0:#,###,##0.0;(#,###,##0.0)   where ; sepates the positive format and negative format (see .NET formatting)
  Dates                            {0:dd/MM/yyyy}   See .NET date formatting options

group:                              If true then Sub Total rows are displayed on change of values of this column

other:      futrue use

dcat=QueryDrillThroughs Get the various Query Output Column Properties of the Published Report in the specified Format jasonarray, csv etc instead of the Data.
e.g. &dfmt=jasonarray&dcat=QueryDrillThroughs

The Properties will included will be things like the Drill Through Id, Description, Media, Category and URL Links

>
[{"category":"BindToRow","ID":"db029209-c9aa-46b8-9e5f-6e95c7704436","code":"D1","titleMenu":"New Drill Through","titleReport":"report title {@Name}{%BirDat}","contentType":"Query","media":"TableBasic","urlLinkBase":"","urlLinkParams":"","splitOnQueryFilterName":""},
{"category":"BindToRow","ID":"ca489d18-25b7-4c14-b5aa-5ff42fd912a6","code":"D2","titleMenu":"New Drill Through","titleReport":"","contentType":"Link","media":"Default","urlLinkBase":"http://www.google.com/search","urlLinkParams":"?q\u003dsharperLight&fieldcode\u003d{%outputName}","splitOnQueryFilterName":""}
]

appType=[value] Override the Content Type e.g. application/text would be appType=text
filename=[value] Override the Content-Disposition default filename e.g. filename=myfile.dat
dheader=[0|1] Include or remove Header details from Data used with dfmt=text and dfmt=csv
dtitle=[0|1] Include or remove Title, Description and Filter details from Data used with dfmt=csv. By default this setting is off. It is useful when exporting to Excel to show the scope of the data
dtotals=[0|1] Include or remove Total details from Data used with dfmt=text,csv,xml,json etc
drowcat=[0|1] Include or remove row category details
drowlimit=[0..(n)] Override or set the data row limit
accesscode=[Code] Published Report can have a security Access Code in addition to the Sign security
language=[en|de|es|ja...] Override the default user account language. Defaults to English if no translations exist
language=es
flt[Name]=[Value] Set the Prompt Filter Value for a Published Report's named Filter. e.g fltAccountCode=12345
flt[Name]_2=[Value] Set the Prompt Filter to Value for a Published Report's named Filter. e.g fltAccountCode_2=zzzzz
contentDisposition=[type] Optional. Set the content Disposition Header information. Handy when setting a download filename. If not set then defaults apply

eg. &contentDisposition=attachment; filename="sharperlight A001.xml"

Chart
ParameterDescription
query=[Group.Code] The Published Report Group and Code e.g /Chart/?query=ADVW.Sample for a list of Published Reports use query=publishlist and for Entry Forms use query=entrylist
showTitle=[1|0] Show Report Title. Defaults to Publisher settings
showDesc=[1|0] Show Report Description. Defaults to Publisher settings
showLegend=[1|0] Show Chart Legend. Defaults to Publisher settings
showTooltips=[1|0] Show Tooltips on Chart sections default is Yes
showPointLabels=[1|0] Show point labels on Chart sections generally the default is No depending on the chart. &showPointLabels=1
bcolor=[red|#00FF00..] Override the background color defined in Publisher e.g. bcolor=blue or bcolor=%23FFEEEE
overflow=[auto|visible|hidden|scroll] Control the HTML overflow, useful when doing dashbaords and Scroll bars are appearing &overflow=hidden. Defaults to auto http://www.w3schools.com/cssref/pr_pos_overflow.asp
stacked=[1|0] When the Chart is column or bar, turn ON or OFF the stacked option. Defaults to Publisher settings
title=[text] Change the default Title
description=[text] Change the default Description
drowlimit=[0..(n)] Override or set the data row limit. Defaults to Publisher settings
accesscode=[Code] Published Report can have a security Access Code in addition to the Sign security
flt[Name]=[Value] Set the Prompt Filter Value for a Published Report's named Filter. e.g fltAccountCode=12345
flt[Name]_2=[Value] Set the Prompt Filter to Value for a Published Report's named Filter. e.g fltAccountCode_2=zzzzz
width=[0..(n)px] Override the width defaults defined in Publisher e.g. width=500px
tableWidth=[0..(n)px] Override the Table width defaults defined in Publisher e.g. tableWidth=500px
tableMarginWidth=[0..(n)px] Override the Table left margin width defaults defined in Publisher e.g. tableMarginWidth=10px
height=[0..(n)px] Override the height defaults defined in Publisher e.g. height=500px
marginLeft=[0..(n)px] Override the margin left defaults defined in Publisher e.g. marginLeft=100px
marginRight=[0..(n)px] Override the margin right defaults defined in Publisher e.g. marginRight=100px
marginTop=[0..(n)px] Override the margin top defaults defined in Publisher e.g. marginTop=100px
marginBottom=[0..(n)px] Override the margin bottom defaults defined in Publisher e.g. marginBottom=100px
chartTheme=[default|flat] Chart Theme to apply to HTML charts. By default it's a bevelled theme but one can change this to a flat them &chartTheme=flat
ctype=column Column Chart Note: for the Flash version of this Chart use &ctype=column2
ctype=column-stacked Stacked Column Chart
ctype=barhorz Horizontal Bar Chart Note: for the Flash version of this Chart use &ctype=barhorz2
ctype=barhorz-stacked Stacked Bar Chart
ctype=line Line Chart Note: for the Flash version of this Chart use &ctype=line2
ctype=area Area Chart Note: for the Flash version of this Chart use &ctype=area2
ctype=pie Pie Chart Note: for the Flash version of this Chart use &ctype=pie2
ctype=donut Donut Chart
ctype=bubble Bubble Chart
ctype=scatter Scatter Chart
ctype=motion Motion Chart - requires one date column and any number of numeric values
ctype=timeline Time Line Chart - requires one date column and any number of numeric values
ctype=calendar Calendar Chart - requires one date column and one number
ctype=dateline Dateline Chart - requires group, code and from and to date columns
ctype=treemap Tree Map Chart
ctype=treemap2 Tree Map Chart - Google Flash version
ctype=waterfall Waterfall Chart
ctype=map-normal Goolge Map Chart - requires either an address and description or latitude, longitude with a description
ctype=map-terrain Goolge Terrain Map Chart - requires either an address and description or latitude, longitude with a description
ctype=map-satellite Goolge Satellite Map Chart - requires either an address and description or latitude, longitude with a description
ctype=map-hybrid Goolge Hybrid Map Chart - requires either an address and description or latitude, longitude with a description
fontSizeLabel=[(5..70)] Font size of labels in chart. Default is 11 e.g. &fontSizeLabel=12
fontSizeLegend=[(5..70)] Font size of legend in chart. Default is 11 e.g. &fontSizeLegend=14
scaleMax=[(n)] The chart max scale value is auto set but it can be overriden e.g. scaleMax=1000
scaleMin=[(n)] The chart min scale value is auto set but it can be overriden e.g. scaleMin=-50
plotBandMin=[(n)] The start value for a plot band section 1 e.g. &plotBandMin=30&plotBandMax=50
plotBandMax=[(n)] The finish value for a plot band section 1 e.g. &plotBandMin=30&plotBandMax=50
plotBandColor=[#html_color] The color for plot band section 1 defaults to green if not set e.g. &plotBandMin=30&plotBandMax=50&plotBandColor=green
plotBandMin2=[(n)] The start value for a plot band section 2 e.g. &plotBandMin2=50&plotBandMax2=70
plotBandMax2=[(n)] The finish value for a plot band section 2 e.g. &plotBandMin2=50&plotBandMax2=70
plotBandColor2=[#html_color] The color for plot band section 2 defaults to yellow if not set e.g. &plotBandMin2=50&plotBandMax2=70&plotBandColor2=yellow
plotBandMin3=[(n)] The start value for a plot band section 3 e.g. &plotBandMin3=70&plotBandMax3=100
plotBandMax3=[(n)] The finish value for a plot band section 3 e.g. &plotBandMin3=70&plotBandMax3=100
plotBandColor3=[#html_color] The color for plot band section 3 defaults to red if not set e.g. &plotBandMin3=70&plotBandMax3=100&plotBandColor3=red
plotView=[day|week|month|currentTimeMarker] Change the default view of Gantt chart from week to month or day &plotView=month

Change the default view to week and also turn on the current time marker &plotView=week_currentTimeMarker

Pivot
ParameterDescription
query=[Group.Code] The Published Report Group and Code e.g /Pivot/?query=ADVW.Sample for a list of Published Reports use query=publishlist and for Entry Forms use query=entrylist
showTitle=[1|0] Show Report Title. Defaults to Publisher settings
showDesc=[1|0] Show Report Description. Defaults to Publisher settings
title=[text] Change the default Title
description=[text] Change the default Description
drowlimit=[0..(n)] Override or set the data row limit. Defaults to Publisher settings
width=[0..(n)px] Override the width defaults defined in Publisher e.g. width=500px
height=[0..(n)px] Override the height defaults defined in Publisher e.g. height=500px
overflow=[auto|visible|hidden|scroll] Control the HTML overflow, useful when doing dashbaords and Scroll bars are appearing &overflow=hidden. Defaults to auto http://www.w3schools.com/cssref/pr_pos_overflow.asp
accesscode=[Code] Published Report can have a security Access Code in addition to the Sign security
flt[Name]=[Value] Set the Prompt Filter Value for a Published Report's named Filter. e.g fltAccountCode=12345
flt[Name]_2=[Value] Set the Prompt Filter to Value for a Published Report's named Filter. e.g fltAccountCode_2=zzzzz
axisSlicer=[fieldUniqueCode] Fields to place in Slicker. Normally this is not required as unused Fields will always be in the Slicer
axisRow=[fieldUniqueCode] Fields to place on Rows separated by Pipe '|'. The Fields unique code can be seen on the Pivot url. e.g. &axisRow=/OrdDat:DateYear|/TotDue:Sum:_2|
axisColumn=[fieldUniqueCode] Fields to place on Columns separated by Pipe '|'. The Fields unique code can be seen on the Pivot url. e.g. &axisRow=/OrdDat:DateYear|/TotDue:Sum:_2|
axisMeasure=[Value] Field is be to the Measure. The Fields unique code can be seen on the Pivot url. e.g. &axisMeasure=/TotDue:Sum:_4|
rows=[1..(n)] Number of rows per Page view
columns=[1..(n)] Number of columns per Page view
rowStart=[1..(n)] Normally not set but can be used to start the display at the speicified offset
colStart=[1..(n)] Normally not set but can be used to start the display at the speicified offset
showConfig=[1|0] Show or Hide configuration details
showNav=[1|0] Show or Hide configuration details / Navigation bar

Table
ParameterDescription
Basically the same as Report but there is no prompting
tableHorz=[1|0] Display Table Rows inline so they go across the page instead of down. &tableHorz=1
tableWidth=[0..(n)px] Override the Table width defaults defined in Publisher e.g. tableWidth=500px
tableMarginWidth=[0..(n)px] Override the Table left margin width defaults defined in Publisher e.g. tableMarginWidth=10px

TableGrid
ParameterDescription
Basically the same as Report but there is no prompting. Table Grid allows columns to be grouped
showGroups=[1|0] Hide or Show the Groups Header Row &showGroups=1
showFilters=[1|0] Hide or Show the Filters Row &showFilters=1
collapseGroups=[1|0] Collapse all groups by default &collapseGroups=1
addRowAt=[top|bottom] When adding rows in grid writeback default to top or bottom. default is top &addRowAt=bottom

TableBasic
ParameterDescription
Basically the same as Report but there is no prompting and the output is basic HTML with no javascript
printDialog=[1|0] Displays the Print dialog Window after displaying HTML page.

Used in combination with &prepareAs=PDF when printing reports

http://sldemo8911.cloudapp.net/mdService1Rest/Report/?query=SALES.REPORT&showTitle=1&prepareAs=PDF&printDialog=1
 
inline=[1|0] To just get the Table section of the report with the HTML Body tags use &inline=1
This is useful when displaying content without using iframes. For example a Query could have
Expression that uses UrlContentGet( "http://sldemo8911.cloudapp.net/mdService1Rest/TableBasic/?query=MYREPORT&inline=1{_System.Rest.Usid}" )
tableHorz=[1|0] Display Table Rows inline so they go across the page instead of down. &tableHorz=1
tableWidth=[0..(n)px] Override the Table width defaults defined in Publisher e.g. tableWidth=500px

TableSilverlight
ParameterDescription
Basically the same as Report but there is no prompting and the output is displayed using Microsoft Silverlight

The default Silverlight view is a DataGrid with column filtering and grouping. If a custom Silverlight application is imported, that is used to present the data

showFind=[1,0] Show the Find textbox and Navigation Bar If there is more than one page &showFind=1

PageHtml
ParameterDescription
Displays the data as HTML using the Publisher Page Designer. If there is no design template present it will auto generate one.
Many of the Table parameters can be used and settings applied when the template is auto generated but not when fixed.
pagination=[1|0] Displays Header every time a new page starts only when rendering in HTML
pageWidth=[##cm,mm,in,pt,cm] set the Page Width defaults to mm if unit not set
Valid units are 'cm', 'mm', 'in', 'pt', and 'pc'
e.g &pageWidth=50cm
pageHeight=[##cm,mm,in,pt,cm] set the Page Height defaults to mm if unit not set
Valid units are 'cm', 'mm', 'in', 'pt', and 'pc'
e.g &pageHeight=20.7cm
margin=[##cm,mm,in,pt,cm] set the Page Margin defaults to mm if unit not set
Valid units are 'cm', 'mm', 'in', 'pt', and 'pc'
e.g &margin=7mm
showTitle=[1|0] Show Report Title. Defaults to Publisher settings. This only works on auto generated Templates
filename=[xxx] If the filename is set the report can be download instead of displayed &filename=myreport.pdf

PagePdf
ParameterDescription
Displays the data as PDF using the Publisher Page Designer. See PageHtml

PageExcel
ParameterDescription
Displays the data as Excel using the Publisher Page Designer. See PageHtml

PageWord
ParameterDescription
Displays the data as MS Word using the Publisher Page Designer. See PageHtml

PageImage
ParameterDescription
Displays the data as TIFF image using the Publisher Page Designer. See PageHtml

MenuTree
ParameterDescription
Displays the dataset as a Hierarchy Tree where a Expression with a URL address that will display the content in a right side pane
There is also flag to put the menu into a Mobile friendly mode that displays the content over the top of the menu with a back slider to return to the menu. &layout=auto will auto switch depending on the device and &layout=slide or &layout=mobile will force the content to display in mobile mode
openInNewWin=[1|0|blank|self|parent|top] Used in the Dataset on the URL field. Will open content in new Windows instead of existing pane. If set to &openInNewWin=self it will open in the existing page. See HTML target for details
openScrolling=[1|0] Used in the Dataset on the URL field. Control content scrollbars
openHeight=[0..(n)px] Used in the Dataset on the URL field. Control height of content pane area
openWidth=[0..(n)px] Used in the Dataset on the URL field. Control width of content pane area
showCollapse=[1|0] show the Collapse Expand button
layout=[auto|slide|mobile|default] Slide or Mobile will use a Mobile friendly display where the content is displayed over the top of the menu instead of on the right. A return title bar is present to allow switching back to the menu page.
&layout=auto will auto detect if it's a touch device and will auto select slide or default
style=[value] See style on Report section e.g &style=green-flat

MenuTreeSlide
ParameterDescription
Same as MenuTree except the display is better for mobile devices as the content is dipslay on a sliding page

MenuHorizontal
ParameterDescription
Displays the dataset as an Application Type Menuu. Use an Expression to define the URL address that will display the content in a pane area below
There is also flag to put the menu into a Mobile friendly mode that displays the content over the top of the menu with a back slider to return to the menu. &layout=auto will auto switch depending on the device and &layout=slide or &layout=mobile will force the content to display in mobile mode
openInNewWin=[1|0|blank|self|parent|top] Used in the Dataset on the URL field. Will open content in new Windows instead of existing pane. If set to &openInNewWin=self it will open in the existing page. See HTML target for details
openScrolling=[1|0] Used in the Dataset on the URL field. Control content scrollbars
openHeight=[0..(n)px] Used in the Dataset on the URL field. Control height of content pane area
openWidth=[0..(n)px] Used in the Dataset on the URL field. Control width of content pane area
layout=[auto|slide|mobile|default] Slide or Mobile will use a Mobile friendly display where the content is displayed over the top of the menu instead of on the right. A return title bar is present to allow switching back to the menu page.
&layout=auto will auto detect if it's a touch device and will auto select slide or default
style=[value] See style on Report section e.g &style=green-flat

MenuHorizontalSlide
ParameterDescription
Same as MenuHorizontal except the display is better for mobile devices as the content is dipslay on a sliding page

MenuVertical
ParameterDescription
Displays the dataset as an Vertical Type Menu. Use an Expression to define the URL address that will display the content in a pane area on the right
There is also flag to put the menu into a Mobile friendly mode that displays the content over the top of the menu with a back slider to return to the menu. &layout=auto will auto switch depending on the device and &layout=slide or &layout=mobile will force the content to display in mobile mode
openInNewWin=[1|0|blank|self|parent|top] Used in the Dataset on the URL field. Will open content in new Windows instead of existing pane. If set to &openInNewWin=self it will open in the existing page. See HTML target for details
openScrolling=[1|0] Used in the Dataset on the URL field. Control content scrollbars
openHeight=[0..(n)px] Used in the Dataset on the URL field. Control height of content pane area
openWidth=[0..(n)px] Used in the Dataset on the URL field. Control width of content pane area
showCollapse=[1|0] show the Collapse Expand button
layout=[auto|slide|mobile|default] Slide or Mobile will use a Mobile friendly display where the content is displayed over the top of the menu instead of on the right. A return title bar is present to allow switching back to the menu page.
&layout=auto will auto detect if it's a touch device and will auto select slide or default
style=[value] See style on Report section e.g &style=green-flat

MenuVerticalSlide
ParameterDescription
Same as MenuVertical except the display is better for mobile devices as the content is dipslay on a sliding page

MenuPanel
ParameterDescription
Displays the dataset as an Application Type Menu Panel. Use an Expression to define the URL address that will display the content in a pane area below
There is also flag to put the menu into a Mobile friendly mode that displays the content over the top of the menu with a back slider to return to the menu. &layout=auto will auto switch depending on the device and &layout=slide or &layout=mobile will force the content to display in mobile mode
If the Panel has only one level then the URL content can be displayed inline instead of on a separate area by using the flag &layout=inline
openInNewWin=[1|0|blank|self|parent|top] Used in the Dataset on the URL field. Will open content in new Windows instead of existing pane. If set to &openInNewWin=self it will open in the existing page. See HTML target for details
openScrolling=[1|0] Used in the Dataset on the URL field. Control content scrollbars
openHeight=[0..(n)px] Used in the Dataset on the URL field. Control height of content pane area
openWidth=[0..(n)px] Used in the Dataset on the URL field. Control width of content pane area
showCollapse=[1|0] show the Collapse Expand button
layout=[auto|slide|mobile|inline|default] Slide or Mobile will use a Mobile friendly display where the content is displayed over the top of the menu instead of on the right. A return title bar is present to allow switching back to the menu page.
&layout=auto will auto detect if it's a touch device and will auto select slide or default
If the Panel has only one level then the URL content can be displayed inline inside the panel instead of on a separate area by using the flag &layout=inline&scrolling=yes
The height of each content section can be set by adding the height url parameter to the report URL address e.g. /Report/?query=Group.Code&height=500px
style=[value] See style on Report section e.g &style=green-flat

MenuPanelSlide
ParameterDescription
Same as MenuPanel except the display is better for mobile devices as the content is display on a sliding page

MenuScrollView
ParameterDescription
Displays the dataset as an Mobile Type Scrolling View Menu of Pages. Use an Expression to define the URL address that will displayed on each page of the silder with a Title bar at the top
openInNewWin=[1|0|blank|self|parent|top] Used in the Dataset on the URL field. Will open content in new Windows instead of existing pane. If set to &openInNewWin=self it will open in the existing page. See HTML target for details
openScrolling=[1|0] Used in the Dataset on the URL field. Control content scrollbars
scrolling=[auto|yes|no] Control if Scroll bars are shown or not
layout=[showpage|hidepage|default] Hide or Show the Page navation at the bottom of the screen the page navigation dots will be shown by default
style=[value] See style on Report section e.g &style=green-flat

MenuTabTop
ParameterDescription
Use the dataset to display Tabs positioned at the top with content below
The dataset can contain outputs for the tab caption, icon, URL or content.
When a output named Content is present it is used instead of the URL address to display text or HTML content inline.
height=[n] Override the content height. Default is 900 &height=400
style=[value] See style on Report section e.g &style=green-flat

MenuTabLeft
ParameterDescription
Use the dataset to display Tabs positioned on the left with content on the right
See MenuTabTop for more details.

MenuTabRight
ParameterDescription
Use the dataset to display Tabs positioned on the right with content on the left
See MenuTabTop for more details.

MenuTabBottom
ParameterDescription
Use the dataset to display Tabs positioned at the bottom with content above
See MenuTabTop for more details.

Rss
ParameterDescription
Basically the same as Report but there is no prompting and the return type is a RSS feed

Atom
ParameterDescription
Basically the same as Report but there is no prompting and the return type is a Atom feed

DashPage
ParameterDescription
Dashboard Pages organise content into Tile and these Tiles can display Published Queries, various URLs and also text content
query=[Group.Code] Dashboard Page Group and Code e.g /DashPage/?query=ADVW.Sample
lock=[1|0] To prevent the Dashboard Page being changed/edited by users add &lock=1
debugSuppressURL=[1|0] To prevent URL's from being displayed. This is useful when URLs are redirecting and it prevents the Dash from being edited &debugSuppressURL=1
showMin=[1|0] show or hide the Minimize button on tiles &showMin=1
showMax=[1|0] show or hide the Maximize button on tiles &showMax=1
signOn=[1|0] By default a Dash Page itself does not require a Sign On even though it's Tile content might. To avoid lots of Tiles asking for a Sign On you can force the Dash Page to check for Sign On with &signOn=1
tileHide:Code=[1|0] show or hide the tile based on it's code &tileHide:T4400=1
tileBColor:Code=[htmlColor] Tile background colour &tileBColor:T4400=yellow
tileTitle:Code=[value] set the tile title based on it's code &tileTitle:T4400=Outstanding Quotes 5
tileTitle:Code=[_value] append the value to the tile title based on it's code (Note it starts with _) &tileTitle:T4400=_Quotes 5
tileTitle:Code=[value_] prefix the value to the tile title based on it's code (Note it ends with _) &tileTitle:T4400=Quotes 5_
tileTitleBColor:Code=[htmlColor] Tile Title background colour &tileTitleBColor:T4400=red
tileTitleFColor:Code=[htmlColor] Tile Title font colour &tileTitleFColor:T4400=white
tileContent:Code=[value] set the Tile Content &tileContent:T4400=Overdue 5 days
tileContentUrl:Code=[url] set the Tile Content URL &tileContentUrl:T4400=http:%2F%2Fwww.sl.com
tileContentUrlParams:Code=[url] set the Tile URL params &tileContentUrlParams:T4400=%26fontSize%3D12
tileContentUrlParams:Code=[_url] Append to the Tile URL params (Note the prefix _ ) &tileContentUrlParams:T4400=_%26fontSize%3D12
tileContentExpUrl:Code=[url] set the Tile Expanded Content URL &tileContentExpUrl:T4400=http:%2F%2Fwww.sl.com
tileContentUrlExpParams:Code=[url] set the Tile Expanded URL params &tileContentUrlExpParams:T4400=%26fontSize%3D12
tileContentUrlExpParams:Code=[_url] Append to the Tile Expanded URL params (Note the prefix _ ) &tileContentUrlExpParams:T4400=_%26fontSize%3D12
tileToolTip:Code=[value] set the tile tooltip based on it's code &tileToolTip:T4400=Outstanding Quotes 5
css=[CSS_Styling] Inject CSS styling into the page and it's sub content
This is used for example to set the default print css styling @page etc. when using Chrome Headless in Scheduler
e.g.
&css=@page{size:A4 landscape; margin:auto;}
&css=div{color:red;}
&css=body{zoom:50%;}

ImageBar
ParameterDescription
Create an image bar that is between the min and max values

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=0&max=100&value=50&color=blue

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=-100&max=100&value=-50&color=blue&colorNeg=red&color1=yellow&color2=99FF33&margin=2

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=-100&max=100&value=45&color=blue&colorNeg=red&color1=yellow&color2=99FF33&margin=2&label=45

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=0&max=100&value=10&color=blue&color1=99FF33&color2=red

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=0&max=100&value=80&color=yellow&color1=white&color2=99FF33&margin=2

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=0&max=100&value=80&color=yellow&color1=white&color2=red&margin=2&reverse=1

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=200&height=15&min=0&max=100&value=80&color=black&color1=yellow&color2=red&reverse=0&direction=horz&arrow=1

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=20&height=100&min=0&max=100&value=80&color=00CC00&color1=black&color2=red&margin=2&reverse=0&direction=vert

http://sldemo8911.cloudapp.net/mdService1Rest/ImageBar/?width=20&height=100&min=0&max=100&value=80&color=black&color1=yellow&color2=red&reverse=0&direction=vert&arrow=1

color=[Htmlcolor] The Bar or Arrow color , defaults to blue. e.g. color=blue or color=CC0000
colorNeg=[Htmlcolor] The Bar or Arrow color when the value is negative , defaults to red. e.g. colorNeg=red or colorNeg=CC0000
color1=[Htmlcolor] Background gradient color 1, defaults to transparent, &color1=green
color2=[Htmlcolor] Background gradient color 2, defaults to transparent &color2=FF0000
direction=[vert|horz] Gradient direction vertical or horzontial &direction=horz or &direction=vert
min=[(n)] Used in scaling, minimum value, defaults to min=0
max=[(n)] Used in scaling, maximum value, defaults to max=100
value=[(n)] Used in scaling, current value this will determine the length of the bar
reverse=[1|0] Reverse the bar, by default the bars min point is on the left e.g. &reverse=1
width=[1..(n)] Image width, defaults to width=200
height=[1..(n)] Image height, defaults to height=15
margin=[0..(n)] The margin between the bar and background. Defaults to 0 e.g. &margin=2
label=[yourLabel] Display a label on the bar. this will in most cases be the value e.g. &label=23
imageType=[png|gif] Image type. defaults to imageType=png

ImageSparkline
ParameterDescription
Create an image Sparkline line or bar that is between the min and max values

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=400&height=100&min=0&max=100&v1=10&v2=20&v3=80&v4=7&v5=99&v6=2&v7=45&color=blue&color1=green&color2=yellow&type=line&lineWidth=2

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=100&height=20&min=0&max=100&v1=10&v2=20&v3=80&v4=7&v5=99&v6=2&v7=45&color=blue&color1=FFFFFF&color2=AAAAAA&type=line&lineWidth=2

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=400&height=100&min=0&max=100&v1=10&v2=20&v3=80&v4=7&v5=99&v6=2&v7=45&color=purple&type=fill

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=100&height=20&min=0&max=100&v1=10&v2=20&v3=80&v4=7&v5=99&v6=2&v7=45&color=black&color1=FFFFFF&color2=AAAAAA&type=fill

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=400&height=100&v1=10&v2=20&v3=-80&v4=-7&v5=49&v6=82&v7=45&color=blue&type=line&lineWidth=2&lineCenterColor=red

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=400&height=100&v1=10&v2=20&v3=-80&v4=-7&v5=49&v6=82&v7=45&color=blue&colorNeg=green&type=bar&lineWidth=2&lineCenterColor=red

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=100&height=20&v1=10&v2=20&v3=80&v4=7&v5=49&v6=82&v7=45&color=blue&colorNeg=green&type=bar&lineWidth=2&lineCenterColor=red

http://sldemo8911.cloudapp.net/mdService1Rest/ImageSparkline/?width=400&height=100&v1=10&v2=20&v3=-80&v4=-7&v5=49&v6=82&v7=45&color=blue&colorNeg=green&type=bar&lineWidth=20&lineCenterColor=red

type=[line|fill|bar] The type of Sparkline to draw line , fill or bar, defaults to line e.g. &type=line
v1=[(n)] First Value to draw e.g &v1=33.5&v2=770.6 etc
v(n)=[(n)] The (n)th Value to draw e.g &v1=33.5&v2=770.6&v3=-499 etc the maximum is 1000 values
color=[Htmlcolor] The Bar or Arrow color , defaults to blue. e.g. color=blue or color=CC0000
colorNeg=[Htmlcolor] When the type is bar the negative value is show in this color , defaults to red. e.g. colorNeg=CC0000
color1=[Htmlcolor] Background gradient color 1, defaults to transparent, &color1=green
color2=[Htmlcolor] Background gradient color 2, defaults to transparent &color2=FF0000
min=[(n)] Used in scaling, minimum value, defaults to minimum value detected in the set
max=[(n)] Used in scaling, maximum value, defaults to maximum value detected in the set
lineCenter=[(n)] Draws a line usually at the zero point. This is useful when negative values are present e.g &lineCenter=0
lineCenterColor=[Htmlcolor] The color of the center line. Defaults to red e.g &lineCenterColor=red
lineWidth=[1..(n)] When the type is line it's the line width, when bar it's the gap between bars in pixels
width=[1..(n)] Image width, defaults to width=200
height=[1..(n)] Image height, defaults to height=20
imageType=[png|gif] Image type. defaults to imageType=png

ImageGradient
ParameterDescription
Create an image background with the color gradient and size specified, defaults to png

http://sldemo8911.cloudapp.net/mdService1Rest/ImageGradient/?width=300&height=100&color1=white&color2=FC5533

http://sldemo8911.cloudapp.net/mdService1Rest/ImageGradient/?direction=horz&width=300&height=100&color1=green&color2=red

color1=[color] Gradient color 1, defaults to color1=#FFFFFF
color2=[color] Gradient color 2, defaults to color1=#DDDDDD
direction=[vert|horz] Gradient direction vertical or horzontial &direction=horz or &direction=vert
width=[1..(n)] Image width, defaults to width=10
height=[1..(n)] Image height, defaults to height=320
imageType=[png|gif] Image type. defaults to imageType=png

ImageText
ParameterDescription
Turn text into an image that can be rotated. Can be used in column headers where the text is vertical

http://sldemo8911.cloudapp.net/mdService1Rest/ImageText/?text=SharperLight&fsize=30&fName=Arial&fRotate=90&fColor=white&bColor=AA11EE

text=[caption] The text to be displayed
fsize=[10|12..(n)] Font Size. defaults to fsize=10
fName=[Arial|...] Font Name. defaults to fsize=Arial
fRotate=[0|90|270] Font Rotate. defaults to fRotate=0
fBold=[0|1 Font Bold. defaults to fBold=0
maxLength=[0..(n) Font wrap at (n) chars. defaults to no wrap maxLength=0
fColor=[color] Fore Color, defaults to fColor=#000000
bColor=[color] Back Color, defaults to transparent

LanguageTrans
ParameterDescription
Uses BING Translate as Google is a Paid Service
If the from and to language are the same then it will just return the text as is

JSON Example
JSON RESULT
{ text: "ショッピング" }

HTML Example
HTML RESULT
ショッピング

langfrom=[en|ja|..etc] Translate from language, defaults to English langfrom=en
langto=[en|ja|..etc] Translate to language, for Japanese use ja and Spanish use es &langto=ja
text=[message] Text to be translated
apiKey=[xxxxxxxx] BING Translate API Key.
You will need to register and get your own API key. Note: You can hit limits if translating large volumes in a short amount of time. If you wait a few minutes the restrictions will reset.
response=[json|text|html] The default is html
callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( { text: "ショッピング" } );
css=[html styling] When returning html you can set the css styleing &css=font-size:12px;color:red

FilePost
ParameterDescription
This POST method allows you to upload files to the server and save, update and delete them in the folder locations defined in Site Setup.
There are two properties in Site Setup / Product Settings / System.
The property called 'Scheduler Files in Folder' will allow anyone to access the files without an user session id.
The other property called 'Secured Folders' will always required a valid user session id to access and update the files. ?usid=xxx

POST The POST content is a JSON object where the file content is encoded as base64. See the HTML5 JavaScript object called FileReader and readAsDataURL.

action values are save,update and delete

path can be a full file path or a relative file path ..\ The relative file path will use the first Secure Folder or Scheduler Files in Folder found in Site Setup / Product Settings / System.
If the path starts with \ then a wild card match is done to determine if the secure or trusted folder location is on C: D: E: or F: drive.

data when can be prefixed with data:...;base64, as seen when using JavaScript FileReader readAsDataURL or directly encoded as based64 with no prefix. This property is not required when deleting files

modifiedDateUtc is optional and is used to set the modifed date timeof the file if it is not the current time



POST
{
"action":"save",
"path":"..\\WC\\Test.jpg",
"modifiedDateUtc": "2018-10-15T06:28:18.6048219Z",
"data":"data:image/jpeg;base64,AAABAAYAEBAAAAEAIAAoBQAAZgAAA....=="
}

RESPONSE

If there is an error of some kind then errorMessage will contain the issue and statusCount will be zero.
The url will contain a link to the file in case you want to download it

{
"errorMessage": "",
"statusCount": 1,
"url": "http://sldemo8911.cloudapp.net/mdService1Rest/File/SecuredHash/YzpcdGVtcFxXQ1xUZXN0Lmljbw==&usid=xxxx...Z&contentType=image/jpeg",
"path": "D:\\Finance\\WC\\Test.jpg",
"fileName": "Test.jpg",
"fileExtension": ".jpg",
"modifiedDateUtc": "2018-10-15T06:28:18.6048219Z",
"size": 171901
}
usid=[...] If the target path is under the Secured Folders then an valid user session id is required

File
ParameterDescription
Get files from various folders like the Resources, DataModel Browser Content, Custom or Trusted and Secure Folders.
The files will usually be html, images and javascript.
To upload files see the method FilePost

THE CUSTOM FOLDER

The Custom Folder can be created under the MetaData folder to host branding files or site specific files on the Application Server.
Use the Custom Folder for these types of misc extensions and customizations as the Resource Folder is cleared down when upgrading

APPLICATION RESOURCES FOLDER
C:\Program Files\philight\SharperLight\bin\Resources\

CUSTOM FOLDER
C:\ProgramData\SharperLight\Metadata\Custom\

DATAMODEL CONTENT

TRUSTED FOLDERS

Trusted Folder locations can be defined and restricted in Site Setup / Product Settings / System / Allowed Scheduler Files in Folder.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.


TRUSTED FOLDERS - Base64

Encode the file path using base64 so users can't directly see the location of the file. Trusted Folder locations can be defined and restricted in Site Setup / Product Settings / System / Allowed Scheduler Files in Folder.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.


TRUSTED FOLDERS - Encrypted

Encrypt the file path with a private key only the server knows, so users can't directly see or change the location of the file. Trusted Folder locations can be defined and restricted in Site Setup / Product Settings / System / Allowed Scheduler Files in Folder.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.


SECURED FOLDERS

Secured Folder locations can be defined and restricted in Site Setup / Product Settings / System / Secured Folders.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.
The url will require a valid user session id on the url because the request is secured. ?usid=xxx
To save,update and delete files see the POST method FilePost


SECURED FOLDERS - Base64

Encode the file path using base64 so users can't directly see the location of the file. See Query Builder Expression EncryptBase64(path) Secured Folder locations can be defined and restricted in Site Setup / Product Settings / System / Secured Folders.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.
The url will require a valid user session id on the url because the request is secured. ?usid=xxx
To save,update and delete files see the POST method FilePost


SECURED FOLDERS - Encrypted

Encrypt the file path with a private key only the server knows, so users can't directly see or change the location of the file.
See Query Builder Expression EncryptPrivate(path) Secured Folder locations can be defined and restricted in Site Setup / Product Settings / System / Secured Folders.
Note: Access is denied to all the files until the folders are specified in Site Setup which requires a Service restart to take affect.
The url will require a valid user session id on the url because the request is secured. ?usid=xxx
To save,update and delete files see the POST method FilePost


contentType=[type] Optional. The returned content type is automatically detected based on the file type, but you may wish to override this.

eg. contentType=text/html

eg. contentType=image/png

eg. contentType=application/x-silverlight-app

isBinary=[1|0] Optional. Is the returned content type binary or not. This is automatically detect based on the file type, but you may wish to override this.

eg. isBinary=1 or isBinary=Y

contentDisposition=[type] Optional. Set the content Disposition Header information. Handy when setting a download filename. If not set then defaults apply

eg. &contentDisposition=attachment; filename="sharperlight A001.xml"

saveAs=[filename] Optional. Set the default download file name

eg. &saveAs=myXL.xls

Content
ParameterDescription
(Please use File instead) Get DataModel Browser Content. This is usally html pages and other resources like javascript and images

For Imported Folders the format is &file=FolderCode\Sub Folder Name\filename

eg. http://sldemo8911.cloudapp.net/mdService1Rest/Content/?product=XYZ&file=MyImportedFolderCode\logo.jpg&contentType=text/html

eg. http://sldemo8911.cloudapp.net/mdService1Rest/Content/?product=XYZ&file=MyImportedFolderCode\Sub%20Folder\Page2.html

When referencing content that is not an imported Folder use the unique code. It is also possible to use the filename but if it is not unique the first match is returned

eg. http://sldemo8911.cloudapp.net/mdService1Rest/Content/?product=XYZ&file=uniqueCode&contentType=text/html

product=[productCode] DataModel Product Code from which the file will be retrieved. e.g product=ADVW
file=[filePath] Get DataModel Browser Content file.
contentType=[type] Optional. The returned content type is automatically detected based on the file type, but you may wish to override this.

eg. contentType=text/html

eg. contentType=image/png

eg. contentType=application/x-silverlight-app

isBinary=[1|0] Optional. Is the returned content type binary or not. This is automatically detect based on the file type, but you may wish to override this.

eg. isBinary=1 or isBinary=Y

Resources
ParameterDescription
(Please use File instead) Get resource files such as HTML,PNG,JPEG.. or javascript files that are under the Folder \Program Files (x86)\Philight\SharperLight\bin\Resources\

This method now replaces ResourceGet. Tt basically has all the same parameters except for file with is put on the url
To get the root url address of the REST service you can use {_rootURL} in front of the Resource noun

There are a number of useful libraries in this Resource folder such as jquery, yui and kendo ui (please do not overwrite the existing folders as they are updated during new installs)

http://sldemo8911.cloudapp.net/mdService1Rest/Resources/jquery/jquery.min.js

or

{_rootURL}Resources/jquery/jquery.min.js

http://sldemo8911.cloudapp.net/mdService1Rest/Resources/kendo/styles/Default/loading_2x.gif

or

{_rootURL}Resources/kendo/styles/Default/loading_2x.gif

ResourceGet
ParameterDescription
file=[fileName] Get resource file. the file name with always be under the Folder \Program Files (x86)\Philight\SharperLight\bin\Resources\

Please use Resource instead of ResourceGet for all new development

http://sldemo8911.cloudapp.net/mdService1Rest/ResourceGet/?file=kendo\styles\Default\loading_2x.gif

There is a special mode to return BLOBs from a Published Queries by using &file=_query
In this case all the normal Query Filter etc apply but result should always be one row with one column for the BLOB

http://sldemo8911.cloudapp.net/mdService1Rest/ResourceGet/?file=_query&query=MyCode&fltId=69
contentType=[type] Optional. The returned content type is automatically detected based on the file type, but you may wish to override this.

eg. contentType=text/html

eg. contentType=image/png

eg. contentType=application/x-silverlight-app

isBinary=[1|0] Optional. Is the returned content type binary or not. This is automatically detected based on the file type, but you may wish to override this.

eg. isBinary=1 or isBinary=Y

contentDisposition=[type] Optional. Set the content Disposition Header information. Handy when setting a download filename. If not set then defaults apply

eg. &contentDisposition=attachment; filename="sharperlight A001.xml"

saveAs=[filename] Optional. Set the default download file name

eg. &saveAs=myXL.xls

ConvertToPDF
ParameterDescription
Convert the URL address and return a PDF file.

This requires PrinceXML to be installed to the default location on the SharperLight Server.
The SharperLight Server Authenication mode can only be set to Default or Basic when using the PDF tool.

To control the default css styling used when converting to PDF, put a file called Page.css in the folder C:\Program Files (x86)\Prince\Engine\bin folder

Note: that SharperLight Reports will automatically show 'Save As PDF' if PrinceXML is installed


Page.css example


@page { size: A3 landscape; margin: 1.3cm ; prince-shrink-to-fit: auto }

 

URL example

http://sldemo8911.cloudapp.net/mdService1Rest/ConvertToPDF?sourceUrl=http%3A%2F%2Fivonlaptopi7%2FmdService1Rest%2FReport%2F%3Fquery%3DADVW.Ranking%26usid%3D0a013ac7e2f749a89fb4139f1b88032bZ%26qmode%3Dreport%26fltCutOff%3D%253C%253D%26fltCutOff_2%3D100000%26fltCutOff2%3D%253C%253D%26fltCutOff2_2%3D1000000%26salt%3D1346654899101Z%26docH%3DRL%26prepareAs%3DPDF%26promptSuppress%3D1%26showTitle%3D1

 

sourceUrl=[encoded_URL] The source URL address to convert to PDF.

Make sure the source URL is encode and include the following parameters to ensure PDF friendly HTML is created when dealing with SharperLight reports

&prepareAs=PDF

&showTitle=1

&usid=XXXXXXXXXX


For Example a sourceUrl may look like the following before URL encoding

http://sldemo8911.cloudapp.net/mdService1Rest/Report/?query=ADVW.Ranking&usid=0a013ac7e2f749a89fb4139f1b88032bZ&qmode=report&fltCutOff=%3C%3D&fltCutOff_2=100000&fltCutOff2=%3C%3D&fltCutOff2_2=1000000&salt=1346654899101Z&docH=RL&prepareAs=PDF&promptSuppress=1&showTitle=1
timeout=[300] Optional. Timeout default to 300 seconds but this can be changed

&timeout=600

options=[xxxx] Optional. Prince PDF command line additional arugments

EarthMap
ParameterDescription
Requires the Google Earch plug in which is free
When muliple points are passed in the map will center in on the first point


Example of a Single Point

http://sldemo8911.cloudapp.net/mdService1Rest/EarthMap/?width=700&latitude=-32.011917&longitude=115.786322&description=Scret%20Treasure&placemark=SharperLight&width=700


Example of mutilpe points

http://sldemo8911.cloudapp.net/mdService1Rest/EarthMap/?width=700&lat1=-32.011917&long1=115.786322&desc1=Treasure&pm1=SharperLight-1&lat2=-32.011517&long2=115.772322&desc2=Gold&pm2=SharperLight-2

<iframe src='http://sldemo8911.cloudapp.net/mdService1Rest/EarthMap/?width=700&lat1=-32.011917&long1=115.786322&desc1=Treasure&pm1=SharperLight-1&lat2=-32.011517&long2=115.772322&desc2=Gold&pm2=SharperLight-2' frameborder=0 height='420px' width='750px' scrolling=no ></iframe>
latitude=[number] latitude. e.g. latitude=-32.011917
lat[1..n]=[number] latitude 1 to (n) when doing multiple points. e.g. lat1=-32.011917&lat2=-32.031917&lat3=-32.011817
longitude=[number] longitude. e.g. longitude=115.786322
long[1..n]=[number] longitude 1 to (n) when doing multiple points. e.g. long1=115.786322&long2=115.786352&long3=115.786333
placemark=[text] placemark
pm[1..n]=[text] placemark when doing multiple points e.g pm1=One&pm2=Two&pm3=Three
description=[text] description that appears in bubble
desc[1..n]=[text] description that appears in bubble when doing multiple points e.g desc1=One&desc2=Two&desc3=Three
zoom=[1..(n)] zoom. the Zoom level e.g. &zoom=14
showBorders=[0,1] show borders in map. The default is Yes but these can be turned off &showBorders=0
showRoads=[0,1] show roads in map. The default is Yes but these can be turned off &showRoads=0
width=[1..(n)px] width. default is width=500px
height=[1..(n)px] height. default is height=380px
apikey=[value] Google Earth Apikey. The default apikey does work if you don't have your own

Frame
ParameterDescription
Return the URL address wrapped in a HTML IFRAME
src=[url] Source URL address
title=[] Frame tab title
width=[0..(n)] Frame width. Defaults to width=100%
height=[0..(n)px] Frame height. Defaults to height=800px
scrolling=[true|false|auto|yes|no] Frame scrolling. Defaults to scrolling=auto

InLine
ParameterDescription
Return the URL content which can be text or HTML as HTML content
http://sldemo8911.cloudapp.net/mdService1Rest/InLine/?content=Sharperlight&title=SL&wrapInHtml=1&bcolor=gray&fcolor=white&fontSize=60px

contentBased64=[content] Content encoded as based 64
contentZip=[content] Content zip compressed and encoded as based 64
content=[content] Content
wrapInHtml=[0|1] Wrap the content in a HTML body to form a complete web page
encodeText=[0|1] When passing plain text content you may want to HTML encode special charactors when they look simular to HTML &encodeText=1
convertNewLine=[0|1] When passing plain text content you may want to convert new lines into a HTML line break tag &convertNewLine=1
title=[title] Set the title when wrapping the content in a HTML body
fontSize=[(n)px] Change the default font size when wrapping the content in a HTML body e.g &fontSize=20px
padding=[(n)px] Change the default padding when wrapping the content in a HTML body e.g &padding=5px
margin=[(n)px] Change the default margin when wrapping the content in a HTML body e.g &margin=5px
bcolor=[htmlColor] Change the default background color when wrapping the content in a HTML body e.g &bcolor=yellow
fcolor=[htmlColor] Change the default font color when wrapping the content in a HTML body e.g &fcolor=red
css=[styleSection] Inject a style section when wrapping the content in a HTML body e.g &css=body{color:red;}
urlRegId=[id] If the content to too large for an URL, you can register the content with an ID using POST and then recall the content using the ID
See UrlRegisterPost
e.g &urlRegId=MyID1234

Dashboard Gauges, Meters and QR Codes
ParameterDescription
type=[gauge1..(n)] The type of gauge or object to be displayed. Most types share a common set of parameters but some may have unique parameters.
e.g &type=gauge
height=[1..(n)px] control height in pixels. Defaults do exist for each control type e.g. &height=100
width=[1..(n)px] control width in pixels. Defaults do exist for each control type e.g. &width=200
title=[text] Title of control if applicable
titleColor=[color|#htmlColor] Set the Title font color &titleColor=red &titleColor=#002ab3
titleSize=[7..(n)] Set the Title font size. If not set then the font size is auto determined. e.g. &titleSize=12 it is also possible to use &fontSize=12
fontSize=[7..(n)] Set the general font size. If not set then the font size is auto determined. e.g. &fontSize=12
title2=[text] Sub Title of control if applicable. In the case of a radial gauge this will be the label at the bottom
title2Color=[color|#htmlColor] Set the Sub Title font color e.g. &title2Color=red &title2Color=#002ab3
title2Size=[7..(n)] Set the Sub Title font size. If not set then the font size is auto determined. e.g. &title2Size=12
value=[(n)] control value. This parameter should always be set
value2=[(n)] control second value where applicable
min=[(n)] Scale minimum value where applicable. Defaults to 0 if not set e.g. &min=0&max=100
max=[(n)] Scale maximum value where applicable. Defaults to 100 if not set. e.g. &min=-5000&max=5000
ticks=[0..(n)] The number of ticks to appear on the scale. e.g. &ticks=5
tickFormat=[.NET format] Some types allow the numbers that appear on the scale to be formatted using .NET formating
e.g. &tickFormat=N2 displays 5123.78 as 5,123.78 and &tickFormat=P0 displays 0.75 as 75% and &tickFormat=K displays 120 as 120K
greyZoneColor=[color|#htmlColor] If the type supports zones like in a radial gauge then the grey zone is the first zone. Will default to blue, white or gray depending on the type.
e.g &greyZoneColor=blue or &greyZoneColor=#7092ff
yellowzone=[(n)|((nP)] Set the start value of the yellow zone which can be a constant or a percentage of the max. Defaults to 0.7 (70%) and this only applies to certain controls
e.g &yellowzone=50
It is possible to set the zone as a percentage of the max value by using P e.g. &yellowzone=70P will do 70% of max
redzone=[(n)|((nP)] Set the start value of the red zone which can be a constant or a percentage of the max. Defaults to 0.9 (90%) and this only applies to certain controls
e.g &redzone=50
It is possible to set the zone as a percentage of the max value by using P e.g. &redzone=90P will do 90% of max
size=[1..(n)] The size will mean different things depending on the type. For example for type gauge it will be the size of the gauge band in pixels
QR code size default is 120
color=[htmlColor] QR code color default is blank
backColor=[htmlColor] Set the background color of the control
QR code back color default is transparent
pointerColor=[color|#htmlColor] Set the color of the pointer niddle if the type has one. e.g. &pointerColor=red or &pointerColor=#002ab3
correction=[L|M|Q|H] QR code error correction level default is M
"L" - approximately 7% "M" - approximately 15% "Q" - approximately 25% "H" - approximately 30%
orientation=[horizontal|vertical] orientation depends on the type of gauge for example gauge8
borderWidth=[0..(n)] QR code border width default is 2
css=[CSS_Styling] Inject CSS styling into the gauge
This is used for example to set the default print css styling @page etc. when using Chrome Headless in Scheduler
e.g.
&css=@page{size:A4 landscape; margin:auto;}
&css=div{color:red;}
&css=body{zoom:50%;}
type=gauge

Radial Gauge (Returns PNG image)

type=gauge2

Gauge 2 (Internet Required)

type=gauge3

Radial Gauge 3 (Uses HTML5)


type=gauge4

Linear Arrow Gauge 4 (Uses HTML5)


type=gauge5

Linear Line Gauge 5 (Uses HTML5)

type=gauge6

Circle Radial Gauge 6 (Uses HTML5)

type=gauge7

Half Circle Radial Gauge 7 (Uses HTML5)

type=gauge8

Progress Bar Gauge 8 (Uses HTML5)





type=gauge9

Percentage Donut (Returns PNG image)

type=gauge10

Percentage Halft Donut (Returns PNG image)

type=QR

QR code (Uses HTML5)



type=digital Digital readout

type=bar Small Bar

UrlRegisterPost
ParameterDescription
When an URL address becomes too long for IE's length limitations of around 2040 chars you can register them and get an ID back. This unique Id is then passed as &urlRegKey=xxxxxx and the Service will retrieve all the URL parameters recorded against the ID. Other parameters can be mixed with urlRegId and the Service will override the Id contents with those on the URL line.
Note: Registered URL data will not last forever and will be auto cleaned up by the Service depending on how many are already in the list and time
Generally the URL id will be good for 5 minutes and if you recall it within that time it will live another 5 minutes
If you register the same id again it will simply update the existing details The unique ID is returned in the response text of the POST

POST data would look something like this below where it's just the parameters or it could be the whole URL address and the Service will strip of the root address



query=Test.DrillThroughX&qmode=report&fltOrderDate=&fltOrderDate_2=&fltAccount=%3CALL%3E&fltAccount_2=&salt=1323056184316Z&docH=RL&drillpid=&drillid=9415f54a-98d6-4490-80d9-a088810ac4cf&outf1=2001%2F05%2F17&outf2=4&&outf3=8847.3000&&usid=06efaa9ad84e48c3b1cd3bb35051c3d8Z&rtype=silverlight

Once you have an unique ID you can then make calls to the Server using &urlRegId=xxxxx


urlRegId=[xxx] Supply your own unique Id instead of letting the Service generate one.
Make sure it's unique enough not to be mixed up with other applications
response=[json|text] The default is text the json response will be in this format e.g. [ { id: "12345ABCDEF" } ]
callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( [ { id: "12345ABCDEF" } ] );

UserLogon
ParameterDescription
After the user logon details have been entered the page is redirected to the url specified.
An user session id e.g. usid=64919ad6e54348a4925faee2146e1b60Z is appended to the redirect url by default but this can be suppressed

Note: This should not be used if the Service is setup for NTLM or Windows Authentication as the browser will Sign in the user and pass the details on the header
title=[text] Override the default Title of logon page
language=[languageCode] Override the default language e.g. &language=ja
redirect=[url] After the user has logged on the user will be redirected to this url address.

The url is always encoded as FromBase64String then zip memory compressed

redirectBase64=[url] After the user has logged on the user will be redirected to this url address.

The url is always encoded as FromBase64String

redirectSimple=[url] After the user has logged on the user will be redirected to this url address.

The url is not encoded except for the url char protection e.g space is %20 etc

appendUsid=[1|0] Enable or disable logic to append user session id to the redirect url
\Custom\UserLogonHeader.html Import your own custom CSS styling and Javascript into the html page head section of the User Logon html from the Service MetaData Custom Folder
Create the file UserLogonHeader.html under the MetaData folder on the Server and it's contents will be included.
The DataModel folder can be found in \ProgramData\Sharperlight\MetaData. Note Instances have their own MetaData folder
Any SharperLight special variables tags like {_rootURL} will be resolved


PRIMARY INSTANCE INSTANCE 123f
EXAMPLE OF THE FILE CONTENT

<style>
h2 {
background-color: #740a0a;
background-image: none;
color: white;
}
<style>


FAVICON

To change the web page favicon.ico icon you create add a file called favicon.icon on the app Server with this path
A Service Restart is required before the new icon will take affect. Also you may have to clear the browser cache.

PRIMARY INSTANCE INSTANCE 123f
\Custom\UserLogonBody.html Import your own custom HTML, CSS styling and Javascript into the body section of the User Logon html from the Service MetaData Custom Folder
Create the folder custom and the file UserLogonBody.html under the Metadata folder on the Server and it's contents will be included.
The DataModel folder can be found in \ProgramData\Sharperlight\MetaData. Note Instances have their own MetaData folder
Any SharperLight special variables tags like {_rootURL} will be resolved


PRIMARY INSTANCE INSTANCE 123f
EXAMPLE OF THE FILE CONTENT

<img src='File/Custom/sharperlight.png'>

options=[create|createanyone|delete|reset|change|pwdchange|2fachange] Override the normal User Logon display to focus on just one aspect like the reseting of passwords for example.

If the service has the flag enabled to allow users to maintain their own accounts then you can create an new account with &options=create

To show password change and Two Factor Authentication details use &options=change

To show password change only use &options=pwdchange

To show Two Factor Authentication only use &options=2fachange

To show both change and reset password details use &options=change+reset

UserLogoff
ParameterDescription
Clears the current users session and redirects to the specified url.
Note: If the Service is setup for NTLM or Windows Authentication a message will appear asking to user to close the browser to complete the sign out instead of redirecting to the url.
title=[text] Override the default Title of logon page
redirect=[url] After the user has logged off the user will be redirected to this url address.

The url is always encoded as FromBase64String then zip memory compressed

redirectBase64=[url] After the user has logged off the user will be redirected to this url address.

The url is always encoded as FromBase64String

redirectSimple=[url] After the user has logged off the user will be redirected to this url address.

The url is not encoded except for the url char protection e.g space is %20 etc

language=[en|de|es|ja...] Override the default user account language. Defaults to English if no translations exist
language=es

UserValidate
ParameterDescription
Validate the hashed user details or user name, password and Two-Factor Code and return an user session id or error message.

Once the user is validated you will receive a user session id which can then be appended to all url requests id &usid=64919ad6e54348a4925faee2146e1b60Z when calling the Service

If the Service has been setup for NTLM or Windows Authentication then the browser will do the authenication and the Service will know who the user is. Therefore this method would not be required

userHash=[UH=hash] SHA256 encoded user details
See Authorization Header for more details on encoding the user details
user=[username] The user name for example john or john@mycompany.com or domain\john depending on the types of accounts setup in Site Setup .e.g &user=john
pwd=[password] The user password. Recommend only using this method over https &pwd=@abkkDs295na
twoFACode=[2FAcode] The user account may require a Two-Factor Authenication Code &twoFACode=223987
language=[en|es|ja...] The user language where the default is English or whatever is set in Site Setup for the user &language=ja for Japanese
response=[default|json|text] The format of the response status e.g. &response=json

The user token starts with UT= and can be used instead of a user name and password if your storing the credentials.
Normally you would include the User Token in the Authorization Header with the prefix SharperLight:

SharperLight:UT=yJYuJj/Q+0fqfpWx6v/lnoZHbMA290oHXMRtbvzqJjybglEm5TuJqg==&userLanguage=ja

Notice you can also force a language onto the token with &userLanguage=code
If you have the user token in the Header then you will not need to put the user session id on the url


If you don't use the user token in the header then you will need to place user session id usid on all url calls to the Service.
Note: The user session id can go stale if not used for many hours.
You can see if the user session is still valid by calling /UserSessionCheck/?usid=64919ad6e54348a4925faee2146e1b60Z

JSON SUCCESS
[ { "token": "UT=SIvmaJcOSpp5pOZuQqRll6MxT2WQIZgUNjH16nPYN7p4ZaElisHghA==","usid": "236a90ea9f2b4ac2b8eec066f58d160cZ","errorMessage": "" } ]

JSON ERROR
[ { "token": "","usid": "","errorMessage": "Invalid username or password" } ]

TEXT SUCCESS
"token": "UT=SIvmaJcOSpp5pOZuQqRll6MxT2WQIZgUNjH16nPYN7p4ZaElisHghA==","usid": "236a90ea9f2b4ac2b8eec066f58d160cZ","errorMessage": ""

TEXT ERROR
"token": "","usid": "","errorMessage": "Invalid username or password"

DEFAULT SUCCESS
YAHOO.namespace("userValidate_get");YAHOO.userValidate_get.data = {"token": "UT=AVSW/FQeqMLcrKiW3vI+vy1imq+vEm/concz3T6PNktiAVjiogFq9g==","usid": "a0d2c156f4fb48788ed28a63a3e4e709Z","errorMessage": "" }

DEFAULT ERROR
YAHOO.namespace("userValidate_get");YAHOO.userValidate_get.data = {"token": "","usid": "","errorMessage": "Invalid username or password" }
callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( [ { "token": "","usid": "","errorMessage": "Invalid username or password" } ] );

UserSessionCheck
ParameterDescription
Check that the user session id is valid. There are two ways to check one where the response text is [valid or invalid] or a html page that redirects to the User Logon

Append the user session id &usid=64919ad6e54348a4925faee2146e1b60Z to all url calls that you make to the Service

http://sldemo8911.cloudapp.net/mdService1Rest/UserSessionCheck/?usid=64919ad6e54348a4925faee2146e1b60Z&response=json

http://sldemo8911.cloudapp.net/mdService1Rest/UserSessionCheck/?usid=64919ad6e54348a4925faee2146e1b60Z&response=html

usid=xxxxxZ User Session ID
resultFormat=[html|simple|json|text] Set the type of response required. html will return a web page that redirects to the User Logon while simple returns the validation results. This is an old parameter and is kept for backward compatibility (see response)
response=[default|html|json|text] The format of the response status e.g. &response=json

The status is very simple it's is either valid or invalid.


JSON SUCCESS
[ { status: "valid" } ]

JSON ERROR
[ { status: "invalid" } ]

TEXT OR SIMPLE SUCCESS
valid

TEXT or SIMPLE ERROR
invalid

callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( [ { status: "valid" } ] );

ListEntryForms
ParameterDescription
pageSize=[1..(n)] Set the number of rows per page. The default is 50
search=[text] Only show the Entry Froms that contain the text anywhere in the details (case insensitive)
product=[productCode] Only show the Published reports whose Product Code equals the values specified
title=[text] Change the default Title
description=[text] Change the default Description

EntryForm
ParameterDescription
productcode=[code] MetaData Product code. e.g. productcode=ADVW
supercode=[value] If the Product has a super field (optional) that is filtered before the Tables, then set it here. e.g. supercode=CompanyID
tablecode=[value] The unique internal Table Code that the Entry Form is writing back too
editkey=[uniqueKey] The record unique key. The table can only have one unique field as multiple unique fields are not supported. (Note this is not an identity)

e.g. http://sldemo8911.cloudapp.net/mdService1Rest/EntryForm/?productcode=ADVW&tablecode=PurVen&editkey=ALLENSON0001

editid=[identityNo] The record identity number. This will be the database table row identity number

e.g. http://sldemo8911.cloudapp.net/mdService1Rest/EntryForm/?productcode=ADVW&tablecode=PurVen&editid=12004

title=[text] Change the default Title
titleAlign=[left|center|right] Title Align also aligns description e.g &titleAlign=left
description=[text] Change the default Description
customHTML=[group.code] Use the defined Custom CSS, Header and Footer sections in the specified Published Report and apply them to this entry form
&customHTML=MyGroup.MyCode

This is a good way to inject your own HTML, CSS Styling and Javascript into the Entry Form to do things like calculate running Totals and other custom logic
sval:code=[value] Override the value to appear in the form for the specified field given it's unique code defined in the Datamodel e.g &sval:AccCode=AB345&sval:Amount=1000.12
lock:code=[0|1] Lock the specified field given it's unique code defined in the Datamodel e.g &lock:AccCode=1
hide:code=[0|1] Hide the specified field given it's unique code defined in the Datamodel e.g &hide:AccCode=1
hideid=[0|1] Hide the identity field if present e.g &hideid=1
language=[en|de|es|ja...] Override the default user account language. Defaults to English if no translations exist
language=es
layout=[panel|mobile|form|auto] The default layout is form while panel or mobile is a better layout for mobile devices with small screens. auto will auto switch between form and panel depending on the device e.g &layout=panel
fieldsPerLine=[1..3] The number of fields to display on one line,where the default is 1. Except for fields with multiple lines, the fields will be display on one line. e.g &fieldsPerLine=2
lineHeightSpace=[1..60] The margin height above each line. default is 1. e.g &lineHeightSpace=5
fontSize=[n] Default font size is 11 but it can be changed e.g &fontSize=12
showBorders=[0|1] Show or hide the form borders. By default there are on e.g &showBorders=0
showSignIn=[0|1] Show user sign in at top. by default it's not shown e.g &showSignIn=1
linkLabel=[value] Override the link Label that appears next to the buttons e.g &linkLabel=Back To Main Page
linkURL=[url] Override the link URL that appears next to the buttons e.g &linkURL=http://www.sl.com
submitMes=[value] Message to display after successful submit e.g &submitMes=Data has been updated
submitLabel=[value] Submit button label e.g &submitLabel=Update
submitReload=[0|1..(n)] Refresh the html parent page where 1 is itself and 2 is it's parent and 3 is the parent.parent etc when successfully submitted e.g &submitReload=2
deleteLabel=[value] Delete button label e.g &deleteLabel=Remove
deleteReload=[0|1..(n)] Refresh the html parent page where 1 is itself and 2 is it's parent and 3 is the parent.parent etc when successfully submitted e.g &deleteReload=3
deleteMes=[value] Message to display after delete e.g &deleteMes=Deleted
closeWinOnSuccess=[0|1] Close the windows on Submit or Delete when successful e.g &closeWinOnSuccess=1
clearLabel=[value] Clear button label e.g &clearLabel=Reset
refreshLabel=[value] Refresh button label e.g &refreshLabel=Refresh display
closeLabel=[value] Lookup Close button label e.g &closeLabel=Done
hideButtons=[buttonNames] Hide the buttons by name Submit=submit Clear=clear Delete=delete Refresh=refresh
To hide the delete button e.g &hideButtons=delete
To hide the delete,clear and refresh buttons e.g &hideButtons=delete_clear_refresh
To hide all but submit e.g &hideButtons=submit_only
fcolor=[htmlColor] Default font colour for labels etc e.g &fcolor=black
bcolor=[htmlColor] Default background colour e.g &bcolor=green
ifcolor=[htmlColor] Default input font colour e.g &ifcolor=black
ibcolor=[htmlColor] Default input background colour e.g &ibcolor=yellow
iocolor=[htmlColor] Default border colour or boxes e.g &iocolor=blue

EntryFormPost
ParameterDescription
There are various ways one can use POST when process one or many records on the same table or different tables.
When just using the default settings the POST will validate and commit the data but you may want to have finer control over this process to avoid half committed data when using batches.
Batch POSTs allow you to process data more than one Table in the same or even different Products.
You can set a Transaction ID to enable with the rollback of the data in the case of errors.
It is also possible to do a validation only POST in case your backend system cannot support a database rollback (See options parameter)


Remember you can use the main Web Channel Index Page and Data Entry / Tree to browse the writeback tables for their Data Entry Forms, Grids and POST metadata and Javascript templates
Writeback Table Metadata


SETTING RECORD VALUES

The POST data takes the same format as a URL address with various parameters and their values for example &ipf0=Computer%20Software
The record fields can be set in two different ways.

1) Field Orginal Position ipf(0..(n)) - Set by ordinal position in writeback field list e.g &ipf3=Company%20ABC
2) Field Unique Code Path ipc:\(code)- Set by field's unique code path in writeback field list e.g. &ipc:\CompanyName=Company%20ABC

Remember you can query any Writeback Table's Metadata to find all the codes and other attributes by using the System \ Datamodel Writeback Metadata table.


SETTING THE PRODUCT AND TABLES

Set the default &productcode=, &supercode= ,&tablecode= and when required the &usid=(User Session ID) on the URL address
You can override the default productcode, supercode and tablecode by setting the &productcode=, &supercode= or &tablecode= inside the POST data on the desired record


EXAMPLE USING ORDINAL ipf(n)=value

ipf0=X1000&ipf1=Widgets+Big+Box&ipf2=7.45&ipf3=2018-06-01

EXAMPLE USING CODE PATH ipc:\(code)=value

ipc:\Code=X1000&ipc:\Name=Widgets+Big+Box&ipc:\Price=7.45&ipc:\UpdateDate=2018-06-01

EXAMPLE WITH MANY RECORDS TO THE SAME TABLE

wbBatchMode=1&ipc:\Code=X1000&ipc:\Name=Widgets+Big+Box&ipc:\Price=7.45&ipc:\UpdateDate=2018-06-01
&wbBatchMode=2&ipc:\Code=X2000&ipc:\Name=Widgets+Medium+Box&ipc:\Price=3.45&ipc:\UpdateDate=2018-06-01
&wbBatchMode=3&ipc:\Code=X3000&ipc:\Name=Widgets+Small+Box&ipc:\Price=1.45&ipc:\UpdateDate=2018-06-01

EXAMPLE WITH MANY RECORDS TO DIFFERENT TABLES (HEADER/LINES) WITH TRANSACTION ID

wbBatchMode=1&wbBatchTrans=MyID&tablecode=POHeader&ipc:\PONo=PO00125&ipc:\ClientCode=CL00123&ipc:\OrderDate=2018-06-01&ipc:\DeliveryDate=2018-06-12
&wbBatchMode=2&wbBatchTrans=MyID&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X1000&ipc:\Qty=1
&wbBatchMode=3&wbBatchTrans=MyID&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X2000&ipc:\Qty=5


USER SESSION

The user session id is not required if the user has already signed on and a cookie session is active or the Service is using NTLM (Windows Single Sign On)
If NTLM is not enabled make sure user session is is always set on the URL address &usid=4a9c02409432477b99066bcbafe35195Z
EXAMPLE USER SESSION &usid=

ipc:\Code=X1000&ipc:\Name=Widgets+Big+Box&ipc:\Price=7.45&ipc:\UpdateDate=2018-06-01


STATUS

The POST results are returned in a JSON Status object with contains a high level summary of any errors and a array of details errors or feedback if present.
Use the response and callback parameters to control the type of status returned. e.g &response=json&callback=MyFunc will do a JSON callback

message: Generally blank if successful but it writebacks may set this on special occasions as a kind of notice or feedback
recordsAffected: The number of rows affected is returned when successful
recordId: The database row Identity of the new record inserted when posting just one record and it was inserted not updated
statusCount: If there are errors it is set to the Count of the statusList.status[] array. When 0 there will be no status array
status.field: The field ordinal position in the writeback list e.g field:"ipf3"
status.fieldCode: The field unique code in the writeback list e.g fieldCode:"\Qty"
status.tableCode: The table unique code of the field e.g fieldCode:"POLine"
status.batchNo: The batch mode number if set where the error was found e.g batchNo:2 1..(n)
status.recordIndex: The record index. If writing to a single table this will be the row Index 0..(n) e.g recordIndex:2
status.category: The error category which case be any of the following InvalidValue, Permissions, InternalError
status.message: The error message e.g message:"Invalid custom code XX11"


Successful POST with no errors

{
"message":"" ,"recordsAffected":1 ,"recordId":-1 ,"statusCount":0 ,"errorMessage":""
,"status": [ { "field":"", "fieldCode":"", "tableCode":"", "recordIndex":0, "batchNo":0 , "message":""} ]
}

Unsuccessful POST with errors

{
"message":""
,"recordsAffected":2
,"recordId":-1
,"statusCount":3
,"errorMessage":"Please correct the errors and resubmit."
,"status": [
{ "field": "ipf3", "fieldCode": "\OrderDate", "tableCode": "POHeader", "batchNo": 1, "recordIndex": 0, "category": "InvalidValue", "message": "Invalid Order Date" }
,{ "field": "ipf2", "fieldCode": "\Qty", "tableCode": "POLine", "batchNo": 2, "recordIndex": 0, "category": "InvalidValue", "message": "Invalid Number A123" }
,{ "field": "ipf1", "fieldCode": "\ItemCode", "tableCode": "POLine", "batchNo": 3, "recordIndex": 0, "category": "InvalidValue", "message": "Invalid Item Code X9999" }
]
}


BATCH MODE

To POST multiple table writebacks take the format explained above and put wbBatchMode=(1..n) on the front of each record in the POST data.
If the target product supports database transactions and rollbacks then you can set transaction IDs by adding &wbBatchTrans=MyUniqueID
Transaction ID's are very useful when you want to rollback all the changes as one block if there is some sort of error

wbBatchMode=1&tablecode=POHeader&ipc:\PONo=PO00125&ipc:\ClientCode=CL00123&ipc:\OrderDate=2018-06-01&ipc:\DeliveryDate=2018-06-12
&wbBatchMode=2&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X1000&ipc:\Qty=1
&wbBatchMode=3&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X2000&ipc:\Qty=5
&wbBatchMode=4&tablecode=POHeader&ipc:\PONo=PO00126&ipc:\ClientCode=CL00123&ipc:\OrderDate=2018-06-01&ipc:\DeliveryDate=2018-06-15
&wbBatchMode=5&tablecode=POLine&ipc:\PONo=PO00126&ipc:\ItemCode=X3000&ipc:\Qty=4
&wbBatchMode=6&tablecode=POLine&ipc:\PONo=PO00126&ipc:\ItemCode=X2000&ipc:\Qty=1

Multiple Transactiond ID's with different Products

wbBatchMode=1&wbBatchTrans=ID001&tablecode=POHeader&ipc:\PONo=PO00125&ipc:\ClientCode=CL00123&ipc:\OrderDate=2018-06-01&ipc:\DeliveryDate=2018-06-12
&wbBatchMode=2&wbBatchTrans=ID001&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X1000&ipc:\Qty=1
&wbBatchMode=3&wbBatchTrans=ID001&tablecode=POLine&ipc:\PONo=PO00125&ipc:\ItemCode=X2000&ipc:\Qty=5
&wbBatchMode=4&wbBatchTrans=ID002&tablecode=POHeader&ipc:\PONo=PO00126&ipc:\ClientCode=CL00123&ipc:\OrderDate=2018-06-01&ipc:\DeliveryDate=2018-06-15
&wbBatchMode=5&wbBatchTrans=ID002&tablecode=POLine&ipc:\PONo=PO00126&ipc:\ItemCode=X3000&ipc:\Qty=4
&wbBatchMode=6&wbBatchTrans=ID002&tablecode=POLine&ipc:\PONo=PO00126&ipc:\ItemCode=X2000&ipc:\Qty=1
&wbBatchMode=7&productcode=BUDX&tablecode=Audit&ipc:\PONo=PO00126&ipc:\AuditDate=2018-06-01
wbBatchMode=1&productcode=ADVW&tablecode=Department&ipf0=...&wbBatchMode=2&productcode=ADVW&....&wbBatchMode=3&&productcode=ADVW....
or with Transaction IDs
wbBatchMode=1&wbBatchTrans=MyID&productcode=ADVW&tablecode=Department&ipf0=...&wbBatchMode=2&wbBatchTrans=MyID&productcode=ADVW&....&wbBatchMode=3&wbBatchTrans=MyID&productcode=ADVW....

If the product is omitted the it is assumed that all data is for the Product defined on the URL address. If the tablecode is omitted then it's assumed that all the data is for the same table defined on the URL address.

Be careful when setting the transaction ID &wbBatchTrans=XXXX
Generaly you would not set it at all or set them all to be the same ID. If is possible to leave blank when not required and set blocks of ID's where required.
If you were posting Header and Line records and wanted to be rolled back the whole post if something was invaid, then give them all the same transaction ID as a block
It is possible to Post to different Products but one should never share the same transaction ID across Products.
Sometimes the target Product is using an API and cannot support Transaction ID's, so keep this in mind
Note that if you are Posting many records to the same table then Transaction ID's are not required.
There is a limit of 10000 rows for a single post.

OPTIONS

Validate Validate only mode &options=Validate
Update The default is already update &options=Update
Delete Delete the records based on their unique field or fields in the rows data &options=Delete
DeleteKey Delete the records based on just the unique field key. No need to set all the data &options=DeleteKey
BreakOnFirstRowError Break on the first row error when processing &options=Update,BreakOnFirstRowError
NoBreakOnRowError Do not break on the first row error when processing &options=Validate,NoBreakOnRowError
BatchValidateBeforeCommit This is the default when processing batches this will ensure that all batch data is validated before going to the commit processing stage.
&options=Update,NoBreakOnRowError,BatchValidateBeforeCommit
BatchValidateDuringCommit When processing batches you may want to speed up the process and skip the up front validation step and just do with batch by batch validation and commit.
This means however if 3 batches are processed and then their is a failure and your not using transaction IDs for rollback, then the remaining batches will not be committed



ENCRYPTION

Sharperlight Data Entry Forms will always Tripple DES encrypt the POST data just in case https/SSL has not ben setup.
It is possible to also do this but normally you would just setup https/SSL to take care of this.
However you can still Tripple DES protect the POST data by viewing the javascript of an EntryForm to get an idea of how to post data and process the return status
Basically the POST data is tribble DES encrypted and a special header is set e.g. DES0x6b68ea21f..ff

The buffer that is encrypted would look something like a url param list where ipf0 to ipf(n) are the field indexes and ipf2 would be the third field in the Entry Form

productcode=[product] DataModel Product Code e.g. productcode=ADVW
supercode=[value] If the Product has a super field (optional) that is filtered before the Tables, then set it here. e.g. supercode=CompanyID
tablecode=[tableCode] DataModel Product Table Code e.g. tablecode=ProLoc
ipf0=[value] First Field's value. format: dates as yyyy-mm-dd HH:mm:ss boolean as 0 or 1 and Values list should be set to their code or description
ipf#=[value] Set the value of the Field by it's Field No position e.g. &ipf3=ABC%20Software
ipc:(code)=[value] Set the value of the Field by it's unique code path (Use the System Datamodel Writeback Metadata Table to get codes) e.g. &ipc:\CompanyName=ABC%20Software
usid=[sessionid] User Session ID
options=[comma,list] Writeback options separated by a comma [Validate,Update,Delete,DeleteKeys,BreakOnFirstRowError,NoBreakOnRowError,BatchValidateBeforeCommit,BatchValidateDuringCommit]
When options are left blank the default behaviour will be to validate all then commit for non-batch Posts and validate while processing batch records in batch mode

For batch mode POST you may want to first post with &options=Validate so just validation is done.
Then follow with another POST with &options=Update or no options to actually do the commit. Note this POST still does validation and committing but at the batch level.

If you want to do just one POST when dealing with batchs but require a complete up front validation before going to the commit phase then use &options=BatchValidateBeforeCommit
uniqueID=[uniqueHash] To prevent the page being cached create unique value say on the date time e.g. uniqueID=D5H16M43S0D
response=[json|jsonp] When left blank the status response will be
{ message: ......}

When set to json it will be
{ message: ......}

When set to jsonp it will be unless you set callback
Callback( { message: ......} );

callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc { "message": ......} );

EntryFormSimpleUpdate
ParameterDescription
Simular to EntryFormPost but all the writeback details are passed on the url GET instead of using POST

The user session id is not required if the user has already signed on and a cookie session is active

This example updates the System Property called code's and updates it's value of the Type Text


Normally the status is returned as text but you can get back the status in JSON format When Inserting data with identities the recordId will be the new identity value

STATUS DEFAULT

{ "message":"" ,"recordsAffected":1 ,"recordId":-1 ,"statusCount":0 ,"errorMessage":"" ,"status": [ { "field":"","message":""} ] }



STATUS JSON

{ "message":"" ,"recordsAffected":1 ,"recordId":-1 ,"statusCount":0 ,"errorMessage":"" ,"status": [ { "field":"","message":""} ] }


productcode=[product] DataModel Product Code e.g. productcode=ADVW
supercode=[value] If the Product has a super field (optional) that is filtered before the Tables, then set it here. e.g. supercode=CompanyID
tablecode=[tableCode] DataModel Product Table Code e.g. tablecode=ProLoc
editid=[idnum] The record id. This would be the unique identify value of the Table Record if one existed

e.g. ?productcode=ADVW&tablecode=ProLoc&editid=2&response=json

editkey=[uniqueKey] The record unique key. The table can only have one unique field as multiple unique fields are not supported. (Note this is not an identity)

e.g. ?productcode=ADVW&tablecode=PurVen&editkey=ALLENSON0001&response=json

ipf0=[value] First Field's value. format: dates as yyyy-mm-dd HH:mm:ss boolean as 0 or 1 and Values list should be set to their code or description
ipf#=[value] The (n)th Field's value.
ipc:(code)=[value] Set the value of the Field by it's unique code path (Use the System Datamodel Writeback Metadata Table to get codes) e.g. &ipc:\CompanyName=ABC%20Software
usid=[sessionid] User Session ID
uniqueID=[uniqueHash] To prevent data being cached create unique value say on date time or something e.g. uniqueID=D5H16M43S0D
response=[json|jsonp] When left blank the status response will be
{ "message": ......}

When set to json it will be
{ message: ......}

When set to jsonp it will be unless you set callback
Callback( { message: ......} );

callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( { "message": ......} );
statusOK=[message] Specifiy the successful update message returned. Normally this is blank (null)

You can reference the number of records affected by {recordsAffected} e.g. &statusOK=Updated {recordsAffected}

statusError=[message] Specifiy the error message returned. Normally this is Error: xxxx

To suppress error messages use &statusError=none

You can reference the error message by using {errorMessage} e.g. &statusError=Try agian {errorMessage}

redirect=[url] If the update is successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is always encoded as FromBase64String then zip memory compressed

redirectBase64=[url] If the update is successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is always encoded as FromBase64String

redirectSimple=[url] If the update is successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is not encoded except for the url char protection e.g space is %20 etc

redirectError=[url] If the update is not successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is always encoded as FromBase64String then zip memory compressed

redirectErrorBase64=[url] If the update is not successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is always encoded as FromBase64String

redirectErrorSimple=[url] If the update is not successful, redirected to this url address. (only valid if response is not set to json or jsonp)

The url is not encoded except for the url char protection e.g space is %20 etc

EntryFormDelete
ParameterDescription
Simular to EntryFormPost where the record details to delete are POSTed
see EntryFormPost

EntryFormDeleteKey
ParameterDescription
Simular to EntryFormPost where the record details to delete are POSTed
If there is a single unique key then pass this in &editkey=ABC
see EntryFormPost
editid=[idnum] The record id. This would be the unique identify value of the Table Record if one existed

e.g. ?productcode=ADVW&tablecode=ProLoc&editid=2&response=json

editkey=[uniqueKey] The record unique key. The table can only have one unique field as multiple unique fields are not supported. (Note this is not an identity)

e.g. ?productcode=ADVW&tablecode=PurVen&editkey=ALLENSON0001&response=json

response=[json|jsonp] When left blank the status response will be
{ "message": ......}

When set to json it will be
{ message: ......}

When set to jsonp it will be unless you set callback
Callback( { "message": ......} );

callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc( { "message": ......} );

EntryFormSimpleDeleteKey
ParameterDescription
EntryFormSimpleDeleteKey is simular to EntryFormDeleteKey but all the parameters are passed using a Url GET instead of POST
The unique key fields are used to delete a record unless a editkey or editid parameter is set.

The user session id is not required if the user has already signed on and a cookie session is active

Delete using identity value
Delete based on all the record field values (Will use unique fields from the field list in delete logic)
Delete a record in the System Property table based on it's unique key
productcode=[product] DataModel Product Code e.g. productcode=ADVW
supercode=[value] If the Product has a super field (optional) that is filtered before the Tables, then set it here. e.g. supercode=CompanyID
tablecode=[tableCode] DataModel Product Table Code e.g. tablecode=ProLoc
editkey=[value] Delete based on the tables single unique field. This only works if there is one unique field not multiple in the table. Note an unique field is a identity &editkey=CL001X
When using editkey no other field values need be passed
editid=[value] Delete based on the tables identity field. This only works if the table has an identity field &editid=1099
When using editid no other field values need be passed
ipf0=[value] First Field's value. format: dates as yyyy-mm-dd HH:mm:ss boolean as 0 or 1 and Values list should be set to their code or description
ipf#=[value] The (n)th Field's value.
ipc:(code)=[value] Set the value of the Field by it's unique code path (Use the System Datamodel Writeback Metadata Table to get codes) e.g. &ipc:\CompanyName=ABC%20Software
usid=[sessionid] User Session ID
response=[json|jsonp] When left blank the status response will be
{ "message": ......}

When set to json it will be
{ message: ......}

When set to jsonp it will be unless you set callback
Callback( { message: ......} );

callback=[MyFunc] JSON Callback function (Optional) &callback=MyFunc results in MyFunc { "message": ......} );
statusOK=[message] Specifiy the successful update message returned. Normally this is blank (null)

You can reference the number of records affected by {recordsAffected} e.g. &statusOK=Updated {recordsAffected}

statusError=[message] Specifiy the error message returned. Normally this is Error: xxxx

To suppress error messages use &statusError=none

You can reference the error message by using {errorMessage} e.g. &statusError=Try agian {errorMessage}

redirect=[url] If the update is successful, redirected to this url address.

The url is always encoded as FromBase64String then zip memory compressed

redirectBase64=[url] If the update is successful, redirected to this url address.

The url is always encoded as FromBase64String

redirectSimple=[url] If the update is successful, redirected to this url address.

The url is not encoded except for the url char protection e.g space is %20 etc

redirectError=[url] If the update is not successful, redirected to this url address.

The url is always encoded as FromBase64String then zip memory compressed

redirectErrorBase64=[url] If the update is not successful, redirected to this url address.

The url is always encoded as FromBase64String

redirectErrorSimple=[url] If the update is not successful, redirected to this url address.

The url is not encoded except for the url char protection e.g space is %20 etc

Process
ParameterDescription
Execute a DataModel Server side process with the specified parameters and process the return status if any.
If Windows Authenication is turned on in the Service then usid is optional but the POST will work quicker if you have an usid.
To discover the Process module and code you will need to open the Datamodel in Studio or have access to the Datamodel documentation files.

DEFAULT Status


ERROR STATUS

{ "errorMessage":"Invalid Process Code ExecuteSQL" }

SUCCESS STATUS with Parameters

{ "statusCount":2 ,"results": ["AAAA","BBBB"] }

SUCCESS STATUS without Parameters

{ "statusCount":0 }

JSON Callback Status

ERROR STATUS

MyFunc( { "errorMessage":"Invalid Process Code ExecuteSQL" } );

SUCCESS STATUS with Parameters

MyFunc( { "statusCount":2,"results": ["AAAA","BBBB"] } );

SUCCESS STATUS without Parameters

MyFunc( { "statusCount":0 } );

productcode=[product] DataModel Product Code e.g. &productcode=ADVW
modulecode=[code] DataModel Server side Process Module code e.g. &module=WriteBack
processcode=[code] DataModel Server side Process code under the specified Module e.g. &process=ExecuteSQL
p1=[value] Parameter 1 value e.g. &p1=ABC
p(n)=[value] Parameter (n)th value e.g. &p1=ABC&p2=123&p3=ZZZZZ
usid=[sessionid] User Session ID
response=[default|json] The format of the response e.g. &response=json
callback=[funcName] The Javascript JSONP callback function name (optional) e.g. &callback=ProcessDone
messageOK=[value] Override the Message format so that your own text is displayed e.g. &messageOK=Done
messageError=[value] Override the error Message format so that your own text is displayed if an error occurs e.g. &messageError=Failed
messageTitle=[value] Override the Message format so that your own text is displayed (Title above message) e.g. &messageTitle=Status

ProcessPost
ParameterDescription
The same as Process except the data is POSTed. format the data buffer as you would the URL parameters

POST buffer:

productcode=ADVW&modulecode=WriteBack&processcode=ExecuteSQL&p1=xxxx&p2=zzzz&usid=feb73c8c0e9c41989da001ea86c15e5aZ


SchedulerTask
ParameterDescription
Execute a Scheduled Task on the Server with parameters on the URL string
To override any Task parameters use the format p1=taskCode:OverrideValue&p2=taskCode:OverrideValue to p(n) where the number is the position of the parameter in the list

Note: The Task is executed asynchronous/out of process so you will not get a response when it's complete
A response JSON status is returned there is an basic validation error like task not found
The reason there is no complete status returned is because the tasks may take a very long time to complete.
If you want to know the progress or final status of the task execution then you can query/poll the System / Scheduler History Table
In this way you can check to see if any errors or complete records have appeared.
The task can create custom entries in the History Log Table with details that can give feedback to this process.

NOTE: What type of user account the task runs as is important and if not set correctly may cause the task not to run or run with the wrong row level security

or if you want to target another Service

DEFAULT Status


ERROR STATUS

{ "errorMessage":"Invalid Task Code Email.Sales" }

ACCEPTED STATUS

{ "statusCount":0 }

JSON Callback Status

ERROR STATUS

MyFunc( { "errorMessage":"Invalid Task Code Email.Sales" } );

ACCEPTED STATUS

MyFunc( { "statusCount":0 } );

task=[taskCode] The Scheduler unique task code e.g. &task=Email.Sales
service=[serviceCode] If there are multiple Remote Connections to various Service you will need to set the Service code to target e.g. &service=002
p(n)=[value] Scheduled task may have parameters defined. You can override these by the position number in the list e.g. &p3=2018-09-23
pwd=[codeOrEncrtped] The Scheduler Task may be protected with a password in the Task Parameters - Allow Query Execution section
use the &pwd=xxxxx url parmameter to set the password - It can be obfuscated by encoding the password as base64 or Tripple DES encrypt it using the Task unique code or Author as the DES password
e.g. &pwd=23kds53ss
usid=[sessionid] User Session ID
response=[default|json] The format of the response e.g. &response=json
callback=[funcName] The Javascript JSONP callback function name (optional) e.g. &callback=TaskDone
messageOK=[value] Override the Message format so that your own text is displayed e.g. &messageOK=Done
messageError=[value] Override the error Message format so that your own text is displayed if an error occurs e.g. &messageError=Failed
messageTitle=[value] Override the Message format so that your own text is displayed (Title above message) e.g. &messageTitle=Status

SchedulerTaskPost
ParameterDescription
Execute a Scheduled Task on the Server format the data POST buffer as you would the URL parameters
See the SchedulerTask GET method for details as details are the same

To override any Task parameters use the format p1=taskCode:OverrideValue&p2=taskCode:OverrideValue to p(n) where the number is the position of the parameter in the list

Note: The Task is executed asynchronous/out of process so you will not get a response when it's complete
A response JSON status is returned there is an basic validation error like task not found
The reason there is no complete status returned is because the tasks may take a very long time to complete.
If you want to know the progress or final status of the task execution then you can query/poll the System / Scheduler History Table
In this way you can check to see if any errors or complete records have appeared.
The task can create custom entries in the History Log Table with details that can give feedback to this process.

NOTE: What type of user account the task runs as is important and if not set correctly may cause the task not to run or run with the wrong row level security

POST buffer

task=MyTaskCode&response=json&callback=MyFunc&p1=code1:value1&p2=code2:value&usid=feb73c8c0e9c41989da001ea86c15e5aZ

if you want to target another Service

task=MyTaskCode&service=PROD2&reponse=json&callback=MyFunc&p1=code1:value1&p2=code2:value&usid=feb73c8c0e9c41989da001ea86c15e5aZ


DEFAULT Status


ERROR STATUS

{ "errorMessage":"Invalid Task Code Email.Sales" }

ACCEPTED STATUS

{ "statusCount":0 }

JSON Callback Status

ERROR STATUS

MyFunc( { "errorMessage":"Invalid Task Code Email.Sales" } );

ACCEPTED STATUS

MyFunc( { "statusCount":0 } );

task=[taskCode] The Scheduler unique task code e.g. &task=Email.Sales
service=[serviceCode] If there are multiple Remote Connections to various Service you will need to set the Service code to target e.g. &service=002
p(n)=[value] Scheduled task may have parameters defined. You can override these by the position number in the list e.g. &p3=2018-09-23
pwd=[codeOrEncrtped] The Scheduler Task may be protected with a password in the Task Parameters - Allow Query Execution section
use the &pwd=xxxxx url parmameter to set the password - It can be obfuscated by encoding the password as base64 or Tripple DES encrypt it using the Task unique code or Author as the DES password
e.g. &pwd=23kds53ss
usid=[sessionid] User Session ID
response=[default|json] The format of the response e.g. &response=json
callback=[funcName] The Javascript JSONP callback function name (optional) e.g. &callback=TaskDone
messageOK=[value] Override the Message format so that your own text is displayed e.g. &messageOK=Done
messageError=[value] Override the error Message format so that your own text is displayed if an error occurs e.g. &messageError=Failed
messageTitle=[value] Override the Message format so that your own text is displayed (Title above message) e.g. &messageTitle=Status

Authorization Header
ParameterDescription
SharperLight:UH=token The Authorization header can contain a SharperLight token in the form of

SharperLight:UH=7C704FD03E70F5BC23EC167BBF0153118B5D962D94E523BC9F9E36590BC7B8CC


The tokens are encrypted using SHA256 as one of two formats. One for Windows accounts and the other for SharperLight accounts

"UH=" + SHA256(userName.toString().toLowerCase() + "/WIN") + "_" + EncryptBuffer(userPass, userName.toString().toLowerCase())

"UH=" + SHA256(userName.toString().toLowerCase() + "/" + userPass)


The function EncryptBuffer() can be obtained as a js file called SecurityEncrypt.js from the REST Service. This function encrypts the details even further using TrippleDES.

e.g.

to get the script file

SharperLight Example of Token in SOAP Header


string urlDataSource = txRESTfulURL.Text.Trim() + "DataSource?query=" + txQueryCode.Text.Trim() + "&dfmt=text2";
WebClient rest = new WebClient();
rest.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCallback);
//put one way SHA256 hash user details on the header
string userHash = "UH=" + HashSHA256(txUserName.Text.Trim().ToLower() + "/" + txPassword.Password.Trim(), true);
rest.Headers[HttpRequestHeader.Authorization] = "SharperLight:" + userHash;
rest.DownloadStringAsync(new Uri(urlDataSource, UriKind.RelativeOrAbsolute));


public static string HashSHA256(string buffer, bool userHex)
{
byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(buffer);
System.Security.Cryptography.SHA256Managed shaM = new System.Security.Cryptography.SHA256Managed();
byte[] result = shaM.ComputeHash(dataBuffer);
if (userHex)
{
string x = BitConverter.ToString(result);
return x.Replace("-", "");
}
else
{
return Convert.ToBase64String(result);
}
}

Custom CSS
ParameterDescription
CustomCSS.zip Custom CSS files can be applied to all Reports or for individual Report based on their Published Group.Code.
See the samples in the CustomCSS.zip file which can be unzipped to Folder


Remove the $ from the sample fileName to activate them
FAVICON

To change the web page favicon.ico icon you create add a file called favicon.icon on the app Server with this path
A Service Restart is required before the new icon will take affect. Also you may have to clear the browser cache.

PRIMARY INSTANCE INSTANCE 123f
Note: To brand the User Logon see the section on UserLogon

glColor=[ReportGroup,Group2,Group3] Used the Custom Colors defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified value
&glColor=FINANCE
&glColor=FINANCE,HR,GL
glChartColor=[ReportGroup,Group2,Group3] Used the Chart Custom Colors defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified &glChartColor=FINANCE
glCSS=[ReportGroup,Group2,Group3] Used the Custom CSS styling defined in the current Published Report and apply them to all Published Reports Groups prefixed with the specified value &glCSS=FINANCE
glHeader=[ReportGroup,Group2,Group3] Used the Custom Header defined in the current Published Report and apply it to all Published Reports Groups prefixed with the specified value &glHeader=FINANCE
glFooter=[ReportGroup,Group2,Group3] Used the Custom Footer defined in the current Published Report and apply it to all Published Reports Groups prefixed with the specified value &glHeader=FINANCE
customHTML=[group.code] Data Entry Form - Use the defined Custom CSS, Header and Footer sections in the specified Published Report and apply them to this entry form
&customHTML=MyGroup.MyCode

This is a good way to inject your own HTML, CSS Styling and Javascript into the Entry Form to do things like calculate running Totals and other custom logic

XBAP Application
ParameterDescription
When the XBAP application has to be setup under IIS it will allow users to access Query Builder, Publisher and Explorer via the Web Browser.  IE provides the best XBAP support. For other browsers you may have to find a plug-in to enable XBAP

Example of Query Builder - where the user will have to log on if they are not on the domain and using Windows Accounts

http://localhost/SLA/md.Wpf.Applications.xbap?app=querybuilder&webservice=http%3a%2f%2flocalhost%2fmdService1Api

Example of Query Builder where the REST Web Channel user session is passed to avoid the Logon Window

http://localhost/SLA/md.Wpf.Applications.xbap?app=querybuilder&webservice=http%3a%2f%2flocalhost%2fmdService1Api&restservice=http%3a%2f%2flocalhost%2fmdService1Rest&usid=c044beb7a2694bc0b5c4a677ed07a366Z
app=[app_name] The application to start

valid values are &app=querybuilder , &app=explorer and &app=publisher
webservice=[url] The API Web Service URL Address. This will be simular to the REST service URL but will end in Api instead of Rest

http://localhost/mdService1Api

Remember to encode the URL

&webservice=http%3a%2f%2flocalhost%2fmdService1Api
restservice=[url] The REST Service URL Address. This is only used when passing an &usid=xxxZ user session from the REST Web Channel. The XBAP will use this address to validate that the user session id is valid.  If the usid or restservice details are invalid or have timed out the User Logon will appear

http://localhost/mdService1Rest

Remember to encode the URL

&restservice=http%3a%2f%2flocalhost%2fmdService1Rest
usid=[xxxx...Z] Pass the user session id from the REST Web Channel Service. If the session id is still valid and the &restservice address is valid then the user logon can be avoided

&usid=c044beb7a2694bc0b5c4a677ed07a366Z
fileloc=[url|filepath] Query Builder and Explorer can open a Query or Report from a URL address. Try and make this the last URL parameter

&fileloc=http://localhost/SkyDrive/QueryBuilderFile.xml

or use a Published Query as the default seed for Query Builder

&fileloc=http://sldemo8911.cloudapp.net/mdService1Rest/QueryDetails/?query=ADVW.ChartArea&dsection=query



Remember to encode the URL

ServiceStartTime
ParameterDescription
Get the time at which the Service was started

http://sldemo8911.cloudapp.net/mdService1Rest/ServiceStartTime

ServiceStatus
ParameterDescription
Get various Service stats such as the current number of cached sessions

http://sldemo8911.cloudapp.net/mdService1Rest/ServiceStatus

ServiceCheck
ParameterDescription
Check to see if all the database connections are working. returns OK or ERROR: Product: XXXX Message: Connection Error

http://sldemo8911.cloudapp.net/mdService1Rest/ServiceCheck

Image
ParameterDescription
icode=[IconName] Icon name. The are too sets small and large e.g icode=Information

http://sldemo8911.cloudapp.net/mdService1Rest/Image/?icode=Document_big

http://sldemo8911.cloudapp.net/mdService1Rest/Image/?icode=DrillThrough

size=[16|32] Icon size. There are two sets 16 and 32 in the \ProgramData\SharperLight\ServiceResources\Images folder. Defaults to size=16
base64=[imageBuffer] Return a image based on the base64 encoded string e.g base64=R0lGO...w==
zipbuffer=[imageBuffer] Return a image based on the Base64(ZipCompress()) encoded string e.g zipbuffer=R0lGO...w==
IconName
_Accounting _Accounting_big _Dashboard _Dashboard_big
_DGP _DGP_big _GPFBUD _GPFBUD_big
_SAPBusOne _SAPBusOne_big _SLF90001 _SLF90001_big
_SLF90002 _SLF90002_big _SLF90004 _SLF90004_big
_SLPlanner _SLPlanner_big _SLResources _SLResources_big
_System _System_big ArrowDownBlue ArrowDownBlue_big
ArrowDownGreen ArrowDownGreen_big ArrowDownRed ArrowDownRed_big
ArrowDownRound ArrowDownRound_big ArrowLeftBlue ArrowLeftBlue_big
ArrowLeftGreen ArrowLeftGreen_big ArrowLeftRed ArrowLeftRed_big
ArrowLeftRound ArrowLeftRound_big ArrowRightBlue ArrowRightBlue_big
ArrowRightGreen ArrowRightGreen_big ArrowRightRed ArrowRightRed_big
ArrowRightRound ArrowRightRound_big ArrowUpBlue ArrowUpBlue_big
ArrowUpGreen ArrowUpGreen_big ArrowUpRed ArrowUpRed_big
ArrowUpRound ArrowUpRound_big Attribute Attribute_big
AttributeNew AttributeNew_big Bookmark Bookmark_big
Chart Chart_big ClientSetup ClientSetup_big
Clipboard Clipboard_big Clock Clock_big
ClockAlarm ClockAlarm_big Close Close_big
Column Column_big Company Company_big
ConnDisabled ConnDisabled_big Connection Connection_big
ConnEnabled ConnEnabled_big ConnError ConnError_big
ConnTemplate ConnTemplate_big Copy Copy_big
Cut Cut_big Database Database_big
DataModelInstaller DataModelInstaller_big Debug Debug_big
Delete Delete_big Dictionary Dictionary_big
Document Document_big Document2 Document2_big
DrilldownDetail DrilldownDetail_big DrilldownSummary DrilldownSummary_big
DrillLink DrillLink_big DrillThrough DrillThrough_big
DrillThroughLink DrillThroughLink_big Error Error_big
Excel Excel_big Explorer Explorer_big
Export Export_big Expression Expression_big
Factory Factory_big Feeds Feeds_big
Field Field_big Field_Boolean Field_Boolean_big
Field_Currency Field_Currency_big Field_Date Field_Date_big
Field_DateTime Field_DateTime_big Field_ID Field_ID_big
Field_Number Field_Number_big Field_Percent Field_Percent_big
Field_Period Field_Period_big Field_Picture Field_Picture_big
Field_Sound Field_Sound_big Field_String Field_String_big
Field_Text Field_Text_big Field_Time Field_Time_big
Field_XML Field_XML_big Field_YesNo Field_YesNo_big
File File_big Filter Filter_big
Find Find_big FolderClosed FolderClosed_big
FolderOpen FolderOpen_big Form_Blue Form_Blue_big
Form_Green Form_Green_big Form_Red Form_Red_big
Form_Yellow Form_Yellow_big FormulaToValue FormulaToValue_big
Global Global_big History History_big
Import Import_big IncludeFile IncludeFile_big
Information Information_big Join Join_big
Key Key_big Link Link_big
Lock Lock_big Lookup Lookup_big
LookupFixed LookupFixed_big LookupHierarchy LookupHierarchy_big
LookupHierarchyLazy LookupHierarchyLazy_big LookupSQL LookupSQL_big
Navigate_Beginning Navigate_Beginning_big Navigate_Bottom Navigate_Bottom_big
Navigate_Down Navigate_Down_big Navigate_End Navigate_End_big
Navigate_Left Navigate_Left_big Navigate_Left2 Navigate_Left2_big
Navigate_Right Navigate_Right_big Navigate_Right2 Navigate_Right2_big
Navigate_Top Navigate_Top_big Navigate_Up Navigate_Up_big
New New_big PDF PDF_big
Pivot Pivot_big Plus Plus_big
Preferences Preferences_big Printer Printer_big
ProcessClientSide ProcessClientSide_big ProcessCustom ProcessCustom_big
Processes Processes_big ProcessSystem ProcessSystem_big
Product Product_big Property Property_big
QueryBuilder QueryBuilder_big QueryModeAggregation QueryModeAggregation_big
QueryModeDetailedReport QueryModeDetailedReport_big QueryModeLookup QueryModeLookup_big
QueryModeReference QueryModeReference_big QueryModeSummaryReport QueryModeSummaryReport_big
RadioOptionOff RadioOptionOff_big RadioOptionOn RadioOptionOn_big
RangeRecal RangeRecal_big Refresh Refresh_big
Row Row_big Save Save_big
SaveAs SaveAs_big Script Script_big
ScriptCSharp ScriptCSharp_big ScriptVBasic ScriptVBasic_big
Service Service_big Setup Setup_big
SharperLight SharperLight_big SiteSetup SiteSetup_big
Solutions Solutions_big SortAscending SortAscending_big
SortDescending SortDescending_big SQL SQL_big
StateValueBuffer StateValueBuffer_big StateValueSQL StateValueSQL_big
StatusBlue StatusBlue_big StatusBrown StatusBrown_big
StatusGreen StatusGreen_big StatusGrey StatusGrey_big
StatusOrange StatusOrange_big StatusRed StatusRed_big
StatusYellow StatusYellow_big Studio Studio_big
Table Table_big Tables Tables_big
TableShared TableShared_big TableWriteback TableWriteback_big
Transform Transform_big TriangleDown TriangleDown_big
TriangleUp TriangleUp_big User User_big
UserAdd UserAdd_big UserGroup UserGroup_big
UserWindows UserWindows_big View View_big
VisualStudio VisualStudio_big Window Window_Application
Window_Application_big Window_big Window_Dialog Window_Dialog_big
Window_Edit Window_Edit_big Window_Gear Window_Gear_big
Window_New Window_New_big Window_Preferences Window_Preferences_big
Window_Sidebar Window_Sidebar_big Word Word_big
Worker Worker_big

Image CSS
ParameterDescription
Get named CSS Font icons from a Kendo and Font Awesome libraries
kendo Font Icons

Use the code as is in navigation menus

When HTML class use class='k-icon k-i.xxx'
k-i-aggregate-fields
k-i-align-bottom
k-i-align-bottom-element
k-i-align-center
k-i-align-center-element
k-i-align-justify
k-i-align-left
k-i-align-left-element
k-i-align-middle
k-i-align-middle-element
k-i-align-remove
k-i-align-right
k-i-align-right-element
k-i-align-top
k-i-align-top-element
k-i-all
k-i-anchor
k-i-apply-format
k-i-arrow-45-down-left
k-i-arrow-45-down-right
k-i-arrow-45-up-left
k-i-arrow-45-up-right
k-i-arrow-60-down
k-i-arrow-60-left
k-i-arrow-60-right
k-i-arrow-60-up
k-i-arrow-chevron-down
k-i-arrow-chevron-left
k-i-arrow-chevron-right
k-i-arrow-chevron-up
k-i-arrow-double-60-down
k-i-arrow-double-60-left
k-i-arrow-double-60-right
k-i-arrow-double-60-up
k-i-arrow-down
k-i-arrow-drill
k-i-arrow-end-down
k-i-arrow-end-left
k-i-arrow-end-right
k-i-arrow-end-up
k-i-arrow-left
k-i-arrow-overflow-down
k-i-arrow-parent
k-i-arrow-right
k-i-arrow-root
k-i-arrows-dimensions
k-i-arrow-seek-down
k-i-arrow-seek-right
k-i-arrow-seek-up
k-i-arrows-kpi
k-i-arrows-no-change
k-i-arrows-resizing
k-i-arrows-swap
k-i-arrow-up
k-i-attachment
k-i-attachment-45
k-i-audio
k-i-back-element
k-i-backward-element
k-i-behance
k-i-behance-box
k-i-blogger
k-i-blogger-box
k-i-blur
k-i-bold
k-i-border-bottom
k-i-border-left
k-i-border-no
k-i-border-right
k-i-borders-all
k-i-borders-inside
k-i-borders-inside-horizontal
k-i-borders-inside-vertical
k-i-borders-outside
k-i-borders-show-hide
k-i-border-top
k-i-brightness-contrast
k-i-brush
k-i-button
k-i-calculator
k-i-calendar
k-i-calendar-date
k-i-cancel
k-i-cancel-circle
k-i-cancel-outline
k-i-cart
k-i-categorize
k-i-cells-merge
k-i-cells-merge-horizontally
k-i-cells-merge-vertically
k-i-cell-split-horizontally
k-i-cell-split-vertically
k-i-change-manually
k-i-check
k-i-checkbox
k-i-checkbox-checked
k-i-check-circle
k-i-check-outline
k-i-circle
k-i-clear-css
k-i-clock
k-i-close
k-i-close-circle
k-i-close-outline
k-i-cloud
k-i-code-snippet
k-i-column-freeze
k-i-columns
k-i-comment
k-i-comment-remove
k-i-comments-remove-all
k-i-connector
k-i-convert-lowercase
k-i-convert-uppercase
k-i-copy
k-i-copy-format
k-i-crop
k-i-cs
k-i-csproj
k-i-css
k-i-css3
k-i-custom-format
k-i-custom-icon
k-i-cut
k-i-decimal-decrease
k-i-decimal-increase
k-i-delete
k-i-delicious
k-i-delicious-box
k-i-dictionary-add
k-i-digg
k-i-digg-box
k-i-div
k-i-document-manager
k-i-dollar
k-i-download
k-i-drag-and-drop
k-i-dribbble
k-i-dribbble-box
k-i-edit
k-i-edit-tools
k-i-email
k-i-email-box
k-i-exe
k-i-facebook
k-i-facebook-box
k-i-file
k-i-file-add
k-i-file-ascx
k-i-file-bac
k-i-file-config
k-i-file-csv
k-i-file-excel
k-i-file-flash
k-i-file-horizontal
k-i-file-mdb
k-i-file-pdf
k-i-file-ppt
k-i-file-psd
k-i-file-txt
k-i-file-word
k-i-file-zip
k-i-film
k-i-filter
k-i-filter-add-expression
k-i-filter-add-group
k-i-filter-clear
k-i-filter-sm
k-i-filter-sort-asc-sm
k-i-filter-sort-desc-sm
k-i-find-and-replace
k-i-flash-manager
k-i-flip-horizontal
k-i-flip-vertical
k-i-folder
k-i-folder-add
k-i-folder-more
k-i-folder-open
k-i-folder-up
k-i-font-family
k-i-font-size
k-i-foreground-color
k-i-form
k-i-format-code-block
k-i-form-element
k-i-formula-fx
k-i-forward
k-i-forward-element
k-i-front-element
k-i-full-screen
k-i-full-screen-exit
k-i-gear
k-i-gears
k-i-globe
k-i-globe-outline
k-i-google
k-i-google-box
k-i-google-plus
k-i-google-plus-box
k-i-greyscale
k-i-grid
k-i-grid-layout
k-i-group
k-i-group-box
k-i-h1
k-i-h2
k-i-h3
k-i-h4
k-i-h5
k-i-h6
k-i-handler-drag
k-i-hd
k-i-heart
k-i-heart-outline
k-i-html
k-i-html5
k-i-hyperlink-email
k-i-hyperlink-globe
k-i-hyperlink-globe-remove
k-i-hyperlink-light-dialog
k-i-hyperlink-open
k-i-hyperlink-open-sm
k-i-image
k-i-image-absolute-position
k-i-image-edit
k-i-image-export
k-i-image-light-dialog
k-i-image-map-editor
k-i-image-resize
k-i-inbox
k-i-indent-decrease
k-i-indent-increase
k-i-information
k-i-insert-down
k-i-insert-middle
k-i-insert-up
k-i-invert-colors
k-i-italic
k-i-js
k-i-launch
k-i-layout
k-i-layout-1-by-4
k-i-layout-2-by-2
k-i-layout-side-by-side
k-i-layout-stacked
k-i-line
k-i-linkedin
k-i-linkedin-box
k-i-link-horizontal
k-i-link-vertical
k-i-list-ordered
k-i-list-unordered
k-i-lock
k-i-login
k-i-logout
k-i-marker-pin
k-i-marker-pin-target
k-i-media-manager
k-i-menu
k-i-minus
k-i-minus-circle
k-i-minus-outline
k-i-minus-sm
k-i-mirror
k-i-module-manager
k-i-more-horizontal
k-i-more-vertical
k-i-myspace
k-i-myspace-box
k-i-non-recurrence
k-i-notification
k-i-page-properties
k-i-paint
k-i-palette
k-i-pan
k-i-pane-freeze
k-i-paragraph-add
k-i-password
k-i-paste
k-i-paste-as-html
k-i-paste-from-word
k-i-paste-from-word-strip-file
k-i-paste-html
k-i-paste-markdown
k-i-paste-plain-text
k-i-pause
k-i-percent
k-i-photo-camera
k-i-pin
k-i-pinterest
k-i-pinterest-box
k-i-play
k-i-playlist
k-i-plus
k-i-plus-circle
k-i-plus-outline
k-i-plus-sm
k-i-preview
k-i-print
k-i-question
k-i-radiobutton
k-i-radiobutton-checked
k-i-reddit
k-i-reddit-box
k-i-redo
k-i-reload
k-i-reload-sm
k-i-reorder
k-i-reset
k-i-reset-color
k-i-reset-sm
k-i-rewind
k-i-rotate
k-i-rotate-left
k-i-rotate-right
k-i-round-corners
k-i-row-freeze
k-i-rows
k-i-rss
k-i-rss-box
k-i-rule-horizontal
k-i-saturation
k-i-save
k-i-select-all
k-i-select-box
k-i-shape
k-i-share
k-i-sharpen
k-i-silverlight
k-i-sln
k-i-sort-asc
k-i-sort-asc-sm
k-i-sort-clear
k-i-sort-desc
k-i-sort-desc-sm
k-i-spell-checker
k-i-star
k-i-star-outline
k-i-stop
k-i-strikethrough
k-i-strip-all-formating
k-i-strip-css-format
k-i-strip-font-elements
k-i-strip-span-elements
k-i-strip-word-formatting
k-i-stumble-upon
k-i-stumble-upon-box
k-i-style-builder
k-i-sub-script
k-i-subtitles
k-i-sum
k-i-sup-script
k-i-symbol
k-i-table
k-i-table-align-bottom-center
k-i-table-align-bottom-left
k-i-table-align-bottom-right
k-i-table-align-middle-center
k-i-table-align-middle-left
k-i-table-align-middle-right
k-i-table-align-remove
k-i-table-align-top-center
k-i-table-align-top-left
k-i-table-align-top-right
k-i-table-cell
k-i-table-cell-delete
k-i-table-cell-properties
k-i-table-column-delete
k-i-table-column-insert-left
k-i-table-column-insert-right
k-i-table-delete
k-i-table-light-dialog
k-i-table-properties
k-i-table-row-delete
k-i-table-row-insert-above
k-i-table-row-insert-below
k-i-tell-a-friend
k-i-tell-a-friend-box
k-i-template-manager
k-i-textarea
k-i-textbox
k-i-textbox-hidden
k-i-text-wrap
k-i-thumbnails-down
k-i-thumbnails-left
k-i-thumbnails-right
k-i-thumbnails-up
k-i-toggle-full-screen-mode
k-i-toolbar-float
k-i-track-changes
k-i-track-changes-accept
k-i-track-changes-accept-all
k-i-track-changes-enable
k-i-track-changes-reject
k-i-track-changes-reject-all
k-i-transperancy
k-i-tri-state-indeterminate
k-i-tri-state-null
k-i-tumblr
k-i-tumblr-box
k-i-twitter
k-i-twitter-box
k-i-underline
k-i-undo
k-i-ungroup
k-i-unlink-horizontal
k-i-unlink-vertical
k-i-unlock
k-i-unpin
k-i-unsort
k-i-upload
k-i-user
k-i-validation-data
k-i-validation-xhtml
k-i-vb
k-i-vbproj
k-i-video-external
k-i-vimeo
k-i-vimeo-box
k-i-volume-down
k-i-volume-off
k-i-volume-up
k-i-warning
k-i-window
k-i-window-minimize
k-i-windows
k-i-wrench
k-i-yammer
k-i-yammer-box
k-i-youtube
k-i-youtube-box
k-i-zoom
k-i-zoom-actual-size
k-i-zoom-best-fit
k-i-zoom-in
k-i-zoom-out
font-awesome Font Icons

Use the code as is in navigation menus

When HTML class use class='fa fa-xxx'
fa-glass
fa-music
fa-search
fa-envelope-o
fa-heart
fa-star
fa-star-o
fa-user
fa-film
fa-th-large
fa-th
fa-th-list
fa-check
fa-remove
fa-close
fa-times
fa-search-plus
fa-search-minus
fa-power-off
fa-signal
fa-gear
fa-cog
fa-trash-o
fa-home
fa-file-o
fa-clock-o
fa-road
fa-download
fa-arrow-circle-o-down
fa-arrow-circle-o-up
fa-inbox
fa-play-circle-o
fa-rotate-right
fa-repeat
fa-refresh
fa-list-alt
fa-lock
fa-flag
fa-headphones
fa-volume-off
fa-volume-down
fa-volume-up
fa-qrcode
fa-barcode
fa-tag
fa-tags
fa-book
fa-bookmark
fa-print
fa-camera
fa-font
fa-bold
fa-italic
fa-text-height
fa-text-width
fa-align-left
fa-align-center
fa-align-right
fa-align-justify
fa-list
fa-dedent
fa-outdent
fa-indent
fa-video-camera
fa-photo
fa-image
fa-picture-o
fa-pencil
fa-map-marker
fa-adjust
fa-tint
fa-edit
fa-pencil-square-o
fa-share-square-o
fa-check-square-o
fa-arrows
fa-step-backward
fa-fast-backward
fa-backward
fa-play
fa-pause
fa-stop
fa-forward
fa-fast-forward
fa-step-forward
fa-eject
fa-chevron-left
fa-chevron-right
fa-plus-circle
fa-minus-circle
fa-times-circle
fa-check-circle
fa-question-circle
fa-info-circle
fa-crosshairs
fa-times-circle-o
fa-check-circle-o
fa-ban
fa-arrow-left
fa-arrow-right
fa-arrow-up
fa-arrow-down
fa-mail-forward
fa-share
fa-expand
fa-compress
fa-plus
fa-minus
fa-asterisk
fa-exclamation-circle
fa-gift
fa-leaf
fa-fire
fa-eye
fa-eye-slash
fa-warning
fa-exclamation-triangle
fa-plane
fa-calendar
fa-random
fa-comment
fa-magnet
fa-chevron-up
fa-chevron-down
fa-retweet
fa-shopping-cart
fa-folder
fa-folder-open
fa-arrows-v
fa-arrows-h
fa-bar-chart-o
fa-bar-chart
fa-twitter-square
fa-facebook-square
fa-camera-retro
fa-key
fa-gears
fa-cogs
fa-comments
fa-thumbs-o-up
fa-thumbs-o-down
fa-star-half
fa-heart-o
fa-sign-out
fa-linkedin-square
fa-thumb-tack
fa-external-link
fa-sign-in
fa-trophy
fa-github-square
fa-upload
fa-lemon-o
fa-phone
fa-square-o
fa-bookmark-o
fa-phone-square
fa-twitter
fa-facebook-f
fa-facebook
fa-github
fa-unlock
fa-credit-card
fa-feed
fa-rss
fa-hdd-o
fa-bullhorn
fa-bell
fa-certificate
fa-hand-o-right
fa-hand-o-left
fa-hand-o-up
fa-hand-o-down
fa-arrow-circle-left
fa-arrow-circle-right
fa-arrow-circle-up
fa-arrow-circle-down
fa-globe
fa-wrench
fa-tasks
fa-filter
fa-briefcase
fa-arrows-alt
fa-group
fa-users
fa-chain
fa-link
fa-cloud
fa-flask
fa-cut
fa-scissors
fa-copy
fa-files-o
fa-paperclip
fa-save
fa-floppy-o
fa-square
fa-navicon
fa-reorder
fa-bars
fa-list-ul
fa-list-ol
fa-strikethrough
fa-underline
fa-table
fa-magic
fa-truck
fa-pinterest
fa-pinterest-square
fa-google-plus-square
fa-google-plus
fa-money
fa-caret-down
fa-caret-up
fa-caret-left
fa-caret-right
fa-columns
fa-unsorted
fa-sort
fa-sort-down
fa-sort-desc
fa-sort-up
fa-sort-asc
fa-envelope
fa-linkedin
fa-rotate-left
fa-undo
fa-legal
fa-gavel
fa-dashboard
fa-tachometer
fa-comment-o
fa-comments-o
fa-flash
fa-bolt
fa-sitemap
fa-umbrella
fa-paste
fa-clipboard
fa-lightbulb-o
fa-exchange
fa-cloud-download
fa-cloud-upload
fa-user-md
fa-stethoscope
fa-suitcase
fa-bell-o
fa-coffee
fa-cutlery
fa-file-text-o
fa-building-o
fa-hospital-o
fa-ambulance
fa-medkit
fa-fighter-jet
fa-beer
fa-h-square
fa-plus-square
fa-angle-double-left
fa-angle-double-right
fa-angle-double-up
fa-angle-double-down
fa-angle-left
fa-angle-right
fa-angle-up
fa-angle-down
fa-desktop
fa-laptop
fa-tablet
fa-mobile-phone
fa-mobile
fa-circle-o
fa-quote-left
fa-quote-right
fa-spinner
fa-circle
fa-mail-reply
fa-reply
fa-github-alt
fa-folder-o
fa-folder-open-o
fa-smile-o
fa-frown-o
fa-meh-o
fa-gamepad
fa-keyboard-o
fa-flag-o
fa-flag-checkered
fa-terminal
fa-code
fa-mail-reply-all
fa-reply-all
fa-star-half-empty
fa-star-half-full
fa-star-half-o
fa-location-arrow
fa-crop
fa-code-fork
fa-unlink
fa-chain-broken
fa-question
fa-info
fa-exclamation
fa-superscript
fa-subscript
fa-eraser
fa-puzzle-piece
fa-microphone
fa-microphone-slash
fa-shield
fa-calendar-o
fa-fire-extinguisher
fa-rocket
fa-maxcdn
fa-chevron-circle-left
fa-chevron-circle-right
fa-chevron-circle-up
fa-chevron-circle-down
fa-html5
fa-css3
fa-anchor
fa-unlock-alt
fa-bullseye
fa-ellipsis-h
fa-ellipsis-v
fa-rss-square
fa-play-circle
fa-ticket
fa-minus-square
fa-minus-square-o
fa-level-up
fa-level-down
fa-check-square
fa-pencil-square
fa-external-link-square
fa-share-square
fa-compass
fa-toggle-down
fa-caret-square-o-down
fa-toggle-up
fa-caret-square-o-up
fa-toggle-right
fa-caret-square-o-right
fa-euro
fa-eur
fa-gbp
fa-dollar
fa-usd
fa-rupee
fa-inr
fa-cny
fa-rmb
fa-yen
fa-jpy
fa-ruble
fa-rouble
fa-rub
fa-won
fa-krw
fa-bitcoin
fa-btc
fa-file
fa-file-text
fa-sort-alpha-asc
fa-sort-alpha-desc
fa-sort-amount-asc
fa-sort-amount-desc
fa-sort-numeric-asc
fa-sort-numeric-desc
fa-thumbs-up
fa-thumbs-down
fa-youtube-square
fa-youtube
fa-xing
fa-xing-square
fa-youtube-play
fa-dropbox
fa-stack-overflow
fa-instagram
fa-flickr
fa-adn
fa-bitbucket
fa-bitbucket-square
fa-tumblr
fa-tumblr-square
fa-long-arrow-down
fa-long-arrow-up
fa-long-arrow-left
fa-long-arrow-right
fa-apple
fa-windows
fa-android
fa-linux
fa-dribbble
fa-skype
fa-foursquare
fa-trello
fa-female
fa-male
fa-gittip
fa-gratipay
fa-sun-o
fa-moon-o
fa-archive
fa-bug
fa-vk
fa-weibo
fa-renren
fa-pagelines
fa-stack-exchange
fa-arrow-circle-o-right
fa-arrow-circle-o-left
fa-toggle-left
fa-caret-square-o-left
fa-dot-circle-o
fa-wheelchair
fa-vimeo-square
fa-turkish-lira
fa-try
fa-plus-square-o
fa-space-shuttle
fa-slack
fa-envelope-square
fa-wordpress
fa-openid
fa-institution
fa-bank
fa-university
fa-mortar-board
fa-graduation-cap
fa-yahoo
fa-google
fa-reddit
fa-reddit-square
fa-stumbleupon-circle
fa-stumbleupon
fa-delicious
fa-digg
fa-pied-piper-pp
fa-pied-piper-alt
fa-drupal
fa-joomla
fa-language
fa-fax
fa-building
fa-child
fa-paw
fa-spoon
fa-cube
fa-cubes
fa-behance
fa-behance-square
fa-steam
fa-steam-square
fa-recycle
fa-automobile
fa-car
fa-cab
fa-taxi
fa-tree
fa-spotify
fa-deviantart
fa-soundcloud
fa-database
fa-file-pdf-o
fa-file-word-o
fa-file-excel-o
fa-file-powerpoint-o
fa-file-photo-o
fa-file-picture-o
fa-file-image-o
fa-file-zip-o
fa-file-archive-o
fa-file-sound-o
fa-file-audio-o
fa-file-movie-o
fa-file-video-o
fa-file-code-o
fa-vine
fa-codepen
fa-jsfiddle
fa-life-bouy
fa-life-buoy
fa-life-saver
fa-support
fa-life-ring
fa-circle-o-notch
fa-ra
fa-resistance
fa-rebel
fa-ge
fa-empire
fa-git-square
fa-git
fa-y-combinator-square
fa-yc-square
fa-hacker-news
fa-tencent-weibo
fa-qq
fa-wechat
fa-weixin
fa-send
fa-paper-plane
fa-send-o
fa-paper-plane-o
fa-history
fa-circle-thin
fa-header
fa-paragraph
fa-sliders
fa-share-alt
fa-share-alt-square
fa-bomb
fa-soccer-ball-o
fa-futbol-o
fa-tty
fa-binoculars
fa-plug
fa-slideshare
fa-twitch
fa-yelp
fa-newspaper-o
fa-wifi
fa-calculator
fa-paypal
fa-google-wallet
fa-cc-visa
fa-cc-mastercard
fa-cc-discover
fa-cc-amex
fa-cc-paypal
fa-cc-stripe
fa-bell-slash
fa-bell-slash-o
fa-trash
fa-copyright
fa-at
fa-eyedropper
fa-paint-brush
fa-birthday-cake
fa-area-chart
fa-pie-chart
fa-line-chart
fa-lastfm
fa-lastfm-square
fa-toggle-off
fa-toggle-on
fa-bicycle
fa-bus
fa-ioxhost
fa-angellist
fa-cc
fa-shekel
fa-sheqel
fa-ils
fa-meanpath
fa-buysellads
fa-connectdevelop
fa-dashcube
fa-forumbee
fa-leanpub
fa-sellsy
fa-shirtsinbulk
fa-simplybuilt
fa-skyatlas
fa-cart-plus
fa-cart-arrow-down
fa-diamond
fa-ship
fa-user-secret
fa-motorcycle
fa-street-view
fa-heartbeat
fa-venus
fa-mars
fa-mercury
fa-intersex
fa-transgender
fa-transgender-alt
fa-venus-double
fa-mars-double
fa-venus-mars
fa-mars-stroke
fa-mars-stroke-v
fa-mars-stroke-h
fa-neuter
fa-genderless
fa-facebook-official
fa-pinterest-p
fa-whatsapp
fa-server
fa-user-plus
fa-user-times
fa-hotel
fa-bed
fa-viacoin
fa-train
fa-subway
fa-medium
fa-yc
fa-y-combinator
fa-optin-monster
fa-opencart
fa-expeditedssl
fa-battery-4
fa-battery
fa-battery-full
fa-battery-3
fa-battery-three-quarters
fa-battery-2
fa-battery-half
fa-battery-1
fa-battery-quarter
fa-battery-0
fa-battery-empty
fa-mouse-pointer
fa-i-cursor
fa-object-group
fa-object-ungroup
fa-sticky-note
fa-sticky-note-o
fa-cc-jcb
fa-cc-diners-club
fa-clone
fa-balance-scale
fa-hourglass-o
fa-hourglass-1
fa-hourglass-start
fa-hourglass-2
fa-hourglass-half
fa-hourglass-3
fa-hourglass-end
fa-hourglass
fa-hand-grab-o
fa-hand-rock-o
fa-hand-stop-o
fa-hand-paper-o
fa-hand-scissors-o
fa-hand-lizard-o
fa-hand-spock-o
fa-hand-pointer-o
fa-hand-peace-o
fa-trademark
fa-registered
fa-creative-commons
fa-gg
fa-gg-circle
fa-tripadvisor
fa-odnoklassniki
fa-odnoklassniki-square
fa-get-pocket
fa-wikipedia-w
fa-safari
fa-chrome
fa-firefox
fa-opera
fa-internet-explorer
fa-tv
fa-television
fa-contao
fa-500px
fa-amazon
fa-calendar-plus-o
fa-calendar-minus-o
fa-calendar-times-o
fa-calendar-check-o
fa-industry
fa-map-pin
fa-map-signs
fa-map-o
fa-map
fa-commenting
fa-commenting-o
fa-houzz
fa-vimeo
fa-black-tie
fa-fonticons
fa-reddit-alien
fa-edge
fa-credit-card-alt
fa-codiepie
fa-modx
fa-fort-awesome
fa-usb
fa-product-hunt
fa-mixcloud
fa-scribd
fa-pause-circle
fa-pause-circle-o
fa-stop-circle
fa-stop-circle-o
fa-shopping-bag
fa-shopping-basket
fa-hashtag
fa-bluetooth
fa-bluetooth-b
fa-percent
fa-gitlab
fa-wpbeginner
fa-wpforms
fa-envira
fa-universal-access
fa-wheelchair-alt
fa-question-circle-o
fa-blind
fa-audio-description
fa-volume-control-phone
fa-braille
fa-assistive-listening-systems
fa-asl-interpreting
fa-american-sign-language-interpreting
fa-deafness
fa-hard-of-hearing
fa-deaf
fa-glide
fa-glide-g
fa-signing
fa-sign-language
fa-low-vision
fa-viadeo
fa-viadeo-square
fa-snapchat
fa-snapchat-ghost
fa-snapchat-square
fa-pied-piper
fa-first-order
fa-yoast
fa-themeisle
fa-google-plus-circle
fa-google-plus-official
fa-fa
fa-font-awesome
fa-handshake-o
fa-envelope-open
fa-envelope-open-o
fa-linode
fa-address-book
fa-address-book-o
fa-vcard
fa-address-card
fa-vcard-o
fa-address-card-o
fa-user-circle
fa-user-circle-o
fa-user-o
fa-id-badge
fa-drivers-license
fa-id-card
fa-drivers-license-o
fa-id-card-o
fa-quora
fa-free-code-camp
fa-telegram
fa-thermometer-4
fa-thermometer
fa-thermometer-full
fa-thermometer-3
fa-thermometer-three-quarters
fa-thermometer-2
fa-thermometer-half
fa-thermometer-1
fa-thermometer-quarter
fa-thermometer-0
fa-thermometer-empty
fa-shower
fa-bathtub
fa-s15
fa-bath
fa-podcast
fa-window-maximize
fa-window-minimize
fa-window-restore
fa-times-rectangle
fa-window-close
fa-times-rectangle-o
fa-window-close-o
fa-bandcamp
fa-grav
fa-etsy
fa-imdb
fa-ravelry
fa-eercast
fa-microchip
fa-snowflake-o
fa-superpowers
fa-wpexplorer
fa-meetup