The Data Source API allows you to update Data Sources on the platform.
This enables scenarios where data sets maintained in other systems (e.g. SAP, Salesforce) can be updated into apps automatically.
Updates to a Data Source will be automatically synchronized to mobile devices by the platform. Thus, if a Data Source is used in a Form or other Screen type, that Data Source can be kept continuously up to date via this API.
Currently Data Sources cannot be deleted nor can they be created by this API – this is to protect existing Screens that use these Data Sources.
Thus, the Data Source must already exist on our platform and be referenced by its unique ExternalId for an API update to succeed.
Data Sources have a maximum limit of 50,000 rows. If more rows are required please contact our support team.
On the Cloud this API is available via SSL secured HTTPS connection using the REST PUT verb:
/api/v2/datasource?format=[xml|json]
The format query string parameter controls the desired response format. Specify either xml or json.
PUT Request
You may use either JSON or XML formats in your PUT request.
You indicate this by setting the ContentType HTTP header as "application/json" or "application/xml". If no ContentType is specified, XML format is assumed.
The required parameters for a PUT request to the Data Sources API are outlined below.
DataSource (<DataSource>)
NOTE - All XML formatted requests must specify the following xml namespace in the DataSource root element: xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
Input Name | Data Type | Required | Description |
Id | GUID | Yes | The unique identifier of the Data Source that this request relates to. Required if ExternalId is not specified. |
ExternalId | String | Yes | The external Id of the Data Source that this request relates to. If Id has been specified, then ExternalId will be set if a value is set in this field. If Id has not been specified, this value is required and must match an existing Data Source External Id. |
CompanyId | Integer | Yes | Your unique Company Id found on the Company Setup page of the secure website |
Integrationkey | String | Yes | Your unique Integration Key found on the Company Setup page of the secure website |
Name | String | Yes | The name of the Data Source. The value specified will overwrite the existing Data Source name. |
Headers | Collection | No | A collection of Header Items. If not specified then the Headers of the Data Source will not be updated. NOTE: The number of Headers must match the number of Val elements found in each Row (if specified). |
Rows | Collection | No | A collection of Row Items that will completely replace your current Data Source rows. A limit of 10,000 Rows applies for replace operations. To add further rows, use further calls to add rows incrementally via the NewRows property. The order of the Rows is the order that the rows will be displayed in the platform. If you specify Rows, then any values in NewRows and DeletedRows will be ignored. |
NewRows | Collection | No | A collection of Row Items that should be added/updated onto the existing Data Source rows. Use this field to perform incremental inserts/updates of your Data Source. A limit of 1,500 New Rows applies per request. |
DeletedRows | Collection | No | A collection of Row Items that should be deleted from the existing Data Source rows. Use this field to perform incremental deletes of your Data Source. A limit of 500 Deleted Rows applies per request. Each Row should contain a single Val element that is your unique identifier for the Row to delete. |
Header (<Header>)
Field Name | Data Type | Required | Description |
Name | String | Yes | Name of this Header |
DisplayAt | String | No | Specifies the desired app display position of this column’s values in each Data Source row. Options available are: Title – The main title area of the row SubLeft – Appears below the Title in smaller text Thumb – Displays the column value as an image thumbnail to the left of the Title. Only applicable if your column values are http URLs pointing at PNG or JPG files. |
Row (<Row>)
Each Row is a collection of Val (<Val>) items, which are the individual column values for that Row. Every Row must contain at least two Vals and must have as many Vals as there are Headers (columns). The first Val should be the unique identifier or key that will be used as the answer value should this Data Source row be selected in a Form. The first Val is also critical as the key for performing incremental deletes through the DeletedRows field mentioned above. The second Val should be the default displayable label text of the row. You can override this default by configuring the Display Options field in the Data Source "Settings" page of the secure website.
Input Name | Data Type | Required | Description |
Val | String | Yes | A column value for this row, can contain any string value. If you want this column to display an icon/image in the mobile app, then specify an http url to the image in question. The image linked to must be in PNG or JPG/JPEG format. See the example below for this. |
PUT Response
If the PUT update is successful, a 200 HTTP status is returned with an empty response.
If the PUT is unsuccessful, a 400 HTTP status is returned along with a DataSourceResponse.
Data Source Response (<DataSourceResponse>)
Input Name | Data Type | Description |
ResponseStatus | Collection | A collection containing the errors that occurred. |
Response Status (<ResponseStatus>)
Input Name | Data Type | Description |
ErrorCode | String | The error code/message for the failure |
Message | String | Description of the error |
Errors | Collection | Any other inner errors. For Data Sources, this is always empty and can be ignored. |
API Usage Example
Given that the API is REST based, you can access the API directly via your web browser to test it using a REST plugin like the Postman plugin for Google Chrome.
PUT Request – XML
XML
<code><code>PUT https://secure.-----------.com/api/v2/DataSource?format=xml Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <span><</span>DataSource> <span><</span>CompanyId>1<span></</span>CompanyId><span><</span>IntegrationKey>xxxxxxxxxxxxxxx<span></</span>IntegrationKey> <span><</span>Name>Favorite Sports<span></</span>Name><span><</span>ExternalId>SPORTS-001<span></</span>ExternalId> <span><</span>Rows> <span><</span>Row> <span><</span>Val>AH<span></</span>Val> <span><</span>Val>Air Hockey<span></</span>Val> <span><</span>Val>This is some additional information about Air Hockey<span></</span>Val> <span><</span>Val>http://mywebsite.com/images/air-hockey.jpg<span></</span>Val> <span></</span>Row> <span><</span>Row> <span><</span>Val>FB<span></</span>Val> <span><</span>Val>Football<span></</span>Val> <span><</span>Val>This is some additional information about Football<span></</span>Val> <span><</span>Val>http://mywebsite.com/images/football.jpg<span></</span>Val> <span></</span>Row><span><</span>Row> <span><</span>Val>CH<span></</span>Val> <span><</span>Val>Chess (We have no additional info or images for this sport)<span></</span>Val><span><</span>Val /> <span><</span>Val /> <span></</span>Row> <span></</span>Rows> <span></</span>DataSource></code></code>
PUT Response – XML (Error example)
XML
HTTP/1.1 400 Bad Request Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <DataSourceResponse> <ResponseStatus><ErrorCode>ArgumentException</ErrorCode> <Errors /> <Message>Missing parameters</Message></ResponseStatus> </DataSourceResponse>