doForms SOAP Web Service API
The SOAP API provides programmatic access to the doForms portal. These APIs enable you add, update and delete information used by your portal.
The doForms REST API documentation can be found here.
Enabling Web Services
Most of the web services work with the specified forms designed in the doForms portal. Others work with the dispatching, tracking and support data related items - lookup tables for example.
Each published Project / Form may be assigned a Web Service ID (WSID), and password for the services to work. This is done via the Manage > Integrations > Web Services page.
Each service may be enabled and disabled based on the activities planned so you can manage which services should be in use.
These services are quota based, please see the section under Quota Limits section
Quota Limits
Limit | Type |
---|---|
50 | Get data requests (retrieving a form data record) per mobile license per WSID |
50 | Dispatch requests (sending a dispatch) per mobile license per WSID |
100 | GPS track point requests (reading a GPS track) per mobile license |
1,000,000 | Total lookup table write operations (uploading a lookup table) per account |
1,000,000 | Total lookup table read operations (downloading a lookup table) per account |
Quota limits are based on daily usage starting at midnight UTC.
Note that during the 7 days immediately following the creation of a WSID, we provide higher limits on "Get data requests" to permit adequate testing of your software.
The lookup table limits are measured in read and write operations, not in number of rows. A good rule of thumb is that the number of read or write operations is approximately 4 X number of rows X number of fields. So a lookup table with 10,000 records and 10 fields would use approximately 400,000 write operations to upload.
Customers requiring higher use limits should contact support@doForms.com.
We reserve the right to change these limits at any time with or without notice in order to maintain the performance and reliability of the doForms website.
Connecting to a Web Service
Detailed instructions on how to connect to a SOAP web service are beyond the scope of this manual. The doForms web services follow the W3C SOAP Specification Version 1.2 (http://www.w3.org/TR/soap/). We recommend using a tool such as soapUI (http://www.soapui.org/) for exploring and testing a doForms web service.
You can get a quick view of your doForms data for a specific WSID by using the address listed under URL on the Manage > Integrations > Web services page. Note that this address does not provide any control of format or the number of records to return, and performance may be poor for large forms.
The doForms web service can be accessed at the following addresses:
SITE | URL |
---|---|
Production (recommended) | https://wss.mydoforms.com/wss?wsdl |
Beta |
Reading Submission Data
Most users of the doForms web services use them to retrieve data records submitted from mobile devices so that these data records can be integrated into another information system.
In many case this process centers around one method: "getUnReadData". This method is used for reading data records that have not been previously read by your client application. The "DataFormat" argument determines if data is returned in CSV, JSON or XML.
The "NumberOfRec" argument determines how many records are returned with each request. We strongly recommend making this value less than 100 for reliability. An empty response will be returned when there are no more data records to read.
In the simplest case, this method is used with the "isAutoUpdate" argument equal to "1". Doing so automatically removes any record that is read with the getUnReadData from the unread data queue so it will not be re-read with subsequent calls of this method. In other cases, you may want to have more control over when a record is marked as read. For example if integrity checks are performed on each returned record. In this case, use the getUnReadData method with the "isAutoUpdate" argument equal to "0". Then use the markUnReadDataAsRead method to manually mark successfully read records from the unread record queue.
The "read" value is saved with the record. This means that it is not possible to use multiple WSIDs for a single form in order to receive multiple streams of the same submissions. Once a record is marked as "read" by one WSID, the record will not be returned by any other WSID.
In doForms there is a distinction between a record that is newly submitted by a mobile device to the doForms website and a previously submitted record that is edited on the doForms website. The getUnReadData method reads both newly submitted records and edited records.
If you need more control over which records are read, consider using the getRecordKeyByReceivedDateRange and getDataByRecordKey methods which will enable you to identify and get specific records based on the date:time in UTC when a record was received by the doForms website. Alternatively, use the getRecordKeyByDateRange method if you want to do this based on the "Date_Created" which is the date:time that the record was created on the mobile device (not recommended).
With all of the "get" methods above, you may also want to delete data records from the doForms website after they have been read. In this case, use the "deleteDataByRecordKey" method . Note that even if the record is to be deleted, it must also be marked as "read" using markUnReadDataAsRead to avoid an error if using the getUnReadData method.
Downloading Media Files
The output of the web services contains the URL address for each attached media file. If you wish to download media files, request them directly using the provided URL.
Integration Tips / Best Practices
- Methods have a quota limit. Requests will be rejected if you reach your quota limit.
- Each form data record has two auto generated unique key fields. Please be sure to use to the value from the correct key field when using a specific method:
- RecordKey – This is a long text value that is more efficient than RecordId. This is referred to as "Record_Key" in exports.
- RecordId – RecordId is a shorter human readable value that contains an auto increment number at the end. This is referred to as "Form_Record" field in the View data and Dispatch tabs and in exports.
- Both RecordKey and RecordId are unique for every record.
- Some of the API methods described here use and/or return two different date:time values:
- Date_Created – This is the date:time when a record is first saved as complete on a mobile device (or on the website).
- Date_Received – This is the date:time when a record was first received by the website.
- Date_Received is the the most reliable method for preventing overlapping record ranges. Since doForms works in connected AND disconnected manner, records may not become available to the web services until some time after the Date_Created time.
- All date/time values are returned in the UTC/GMT time zone. You can use the Time Zone parameter that is returned by the newest version of the getDataByRecordKey method to calculate the local Date_Created.
- Note that in all cases the "[WS ID]" and "[Password]" refer to a specific doForms project/form web service.
- Fields are not guaranteed to always be returned in the same order. Use the field name instead of the index when parsing data.
Managing Lookup Data
Lookup data can be managed using the following methods:
METHOD | DESCRIPTION |
---|---|
addLookupTableData | Create a lookup table, including the column structure. Once set, the column structure can't be changed. This method should only be called once for each lookup table. |
appendLookupTableData2 | Add records to an existing lookup table. Set the COMPLETE parameter to 1 on the last batch of records to append. The changes will not be sent to the app until a COMPLETE = 1. |
deleteLookupTableData | Clear the data from an existing lookup table. If not all records could be deleted in a single request, the hasMoreRecords node will contain "true". Continue calling deleteLookupTableData until hasMoreRecords = "false". |
updateLookupTableData | A convenience method that deletes records from the lookup table and then appends records. This method may return an error if not all records could be cleared in a single request. In this case use deleteLookupTableData and appendLookupTableData2 individually. |
Current Service Methods
Please note the latest method may have a number appended to its name. This is the revision of the method due to deprecation or changes to the interface. Deprecated methods are listed at the end of this document.
NAME | DESCRIPTION |
---|---|
addLookupTableData | Add a new lookup table. Note that this method is subject to the Quota Limits described above. |
appendLookupTableData2 | Append new rows to an existing lookup table. Note that this method is subject to the Quota Limits described above. |
checkValidWebservice | Verify that a WSID is valid. |
deleteData | Delete data records by the RecordId. |
deleteDataByRecordKey | Delete data records by the RecordKey. |
deleteDispatch | Delete dispatch records based RecordKey. |
deleteLookupTableData | Delete all rows in an existing lookup table. |
getDataByRecordKey9 | Get the detail of a data record with the specified RecordKey in a specified format. |
getFormRecordCount | Get the total number of data records for a specific WSID. |
getFormTemplate2 | Get the form structure in XML format for a specific WSID. |
getGPSTrackingPoints | Get all the tracking points that are within a certain date range (created on the mobile unit) for a specific mobile unit. Note that this method is subject to the Quota Limits described above. |
getLookupTableData | Get the content of a lookup table. Note that this method is subject to the Quota Limits described above. |
getLookupTableList | Get a list of all lookup tables in the account. Includes only the Lookup Table key, name, description and the column list. |
getMobileUnits | Get a list of all the mobile units in an account. |
getRecordKeyByDateRange | Get a list of the RecordKeys in a WSID that were created in a given date range. (Date_Created) |
getRecordKeyByEditedDateRange | Get a list of the RecordKeys in a WSID that were edited in a given date range. |
getRecordKeyByReceivedDateRange | Get a list of the RecordKeys in a WSID that were received in a given date range. (Date_Received) |
getUnReadData | Get data records that have not been previously read. See description under Reading Data. Note that this method is subject to the Quota Limits described above. |
getWsIDList2 | Get a list of active WSIDs in an account that use the provided password. |
listDispatch | Get a list of dispatch record headers based on status. Includes only RecordKey, MobileNumber, Date Completed, and Date Submitted. |
markUnReadDataAsRead | Mark data records as "read" to remove the them from the next request to getUnReadData. |
submissionDispatch2 | Send a dispatch record for a specific WSID. Note that this method is subject to the Quota Limits described above. |
updateLookupTableData | Update an existing lookup table. Note that this method is subject to the Quota Limits described above. |
Service Methods
getWsIDList2
Return the list of active WSIDs for an account which match the password.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getWsIDList2>
<arg0_java_lang_String>[Account Name]</arg0_java_lang_String>
<arg1_java_lang_String>[WS Password]</arg1_java_lang_String>
<arg2_int>[ResponseFormat]</arg2_int>
</ser:getWsIDList2>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [Account Name] is the Account name or Website name
- [WS Password] is the WS Password
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
getFormTemplate2
Get the form structure in XML format.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getFormTemplate2>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
</ser:getFormTemplate2>
</soapenv:Body>
</soapenv:Envelope>
checkValidWebservice
Check if a WSID is valid or not.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:checkValidWebservice>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
</ser:checkValidWebservice>
</soapenv:Body>
</soapenv:Envelope>
Returns:
- True if the WS is valid
- False if the WS is invalid
getFormRecordCount
Get the total records for a specific WSID.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getFormRecordCount>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
</ser:getFormRecordCount>
</soapenv:Body>
</soapenv:Envelope>
Returns:
- Number of records
getUnReadData
Download records that have not been previously downloaded, including new records. Note that this method is subject to the quota limits.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getUnReadData>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_int>[DataFormat]</arg2_int>
<arg3_int>[NumberOfRec]</arg3_int>
<arg4_int>[isAutoUpdate]</arg4_int>
</ser:getUnReadData>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [DataFormat]: 1 = CSV, 2 = XML
- [NumberOfRec]: the number of records to be downloaded. Due to the existing limits from GAE, we recommend to just read less than 100 records for each call.
- [isAutoUpdate]: 1-the downloaded records will be automatically set to "read" and will not be returned in next calls; 0-the downloaded records are still kept as "unread"
- Note: If using isAutoUpdate=0, you should use the markUnReadDataAsRead method to manually mark the records as read in order to avoid service limitations on number of records read daily.
Returns:
- CSV format:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<tns:getUnReadDataResponse xmlns:tns="services.wss.portal.doforms.mdt.com" targetNamespace="services.wss.portal.doforms.mdt.com">
<return>CSV DATA HERE</return>
</tns:getUnReadDataResponse>
</soap:Body>
</soap:Envelope>
markUnReadDataAsRead
Mark the unread data as "read" to remove the corresponding record from the getUnReadData call
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:markUnReadDataAsRead>
<arg0_java_lang_String>[RecordKey]</arg0_java_lang_String>
</ser:markUnReadDataAsRead>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [RecordKey]: The RecordKey which is extracted from the "@recordKey" field returned getUnReadData method.
getRecordKeyByReceivedDateRange
Return a list of the RecordKeys in a given received date range which is the date:time that the record is received by the website.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getRecordKeyByReceivedDateRange>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[From Date]</arg2_java_lang_String>
<arg3_java_lang_String>[To Date]</arg3_java_lang_String>
</ser:getRecordKeyByReceivedDateRange>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [From Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
- [To Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
getRecordKeyByEditedDateRange
Return a list of the RecordKeys in a given date range when the records are edited.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getRecordKeyByEditedDateRange>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[From Date]</arg2_java_lang_String>
<arg3_java_lang_String>[To Date]</arg3_java_lang_String>
</ser:getRecordKeyByEditedDateRange>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [From Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
- [To Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
getRecordKeyByDateRange
Return a list of the RecordKeys in a given submitted date range.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getRecordKeyByDateRange>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[From Date]</arg2_java_lang_String>
<arg3_java_lang_String>[To Date]</arg3_java_lang_String>
</ser:getRecordKeyByDateRange>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [From Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
- [To Date]: the UTC date:time in MM/dd/yyyy HH:mm:ss format
getDataByRecordKey9
Get the detail of a record with the specified RecordKey in a specified format. Note that this method is subject to the Use Limits described above.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getDataByRecordKey9>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[RecordKey]</arg2_java_lang_String>
<arg3_int>[ResponseFormat]</arg3_int>
<arg4_int>[DatetimeFormat]</arg4_int>
<arg5_int>[OptionFormat]</arg5_int>
</ser:getDataByRecordKey9>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [RecordKey]: The RecordKey which is extracted from the "@recordKey" field returned by the "getRecordKeyByDateRange" method
- [ResponseFormat]: 1=CSV, 2=XML, 3=JSON
- [DatetimeFormat]: The format used for date and time fields.
- 0 = yyyy-MM-ddTHH:mm:ss (UTC)
- 1 = MM/dd/yyyy HH:mm:ss (local time with GMT offset)
- 2 = Form fields use the format from Advanced format or Website > Settings in local time. System fields use yyyy-MM-ddTHH:mm:ss (UTC).
- [OptionFormat]: The format for Choose one and Choose multiple fields:
- 0 = Underlying value
- 1 = Caption value
- 2 = Underlying value + Caption value
submissionDispatch2
Send a record to a device as a Dispatch.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:submissionDispatch2>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[recordsToSubmit]</arg2_java_lang_String>
</ser:submissionDispatch>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [recordsToSubmit] is a CSV data string including headers and corresponding values concatenated by @END_LINE;
Example [recordsToSubmit]:
"@mobileNumber","string_question","integer_question","decimal_question","date_question","Time_question","Date_Time_question","select_multiple_question","select_one_question","geopoint_question","barcode_question"@END_LINE;"0909707606","sent using wss to the mobile device 0909707606 #9","11","12.5","2012-07-06","23:59:59","2012-07-21T23:59:59","option_a option_c","option_3","10.687 106.23 5420","898777907"
- The “@mobileNumber” is a system field. If this field is blank or omitted, the submitted record status will be set to “Pending”. Otherwise, the record will be delivered to the mobile unit whose mobile number is set in this field and the status set to "Sent".
- "@Scheduled_Time" is a system field. If the dispatch job should be started at a specific time, populate this field with a date and time value. Use ISO format (e.g. "2012-07-21T23:59:59") in the local time zone of the account.
- "@Scheduled_Duration_Hour" is a system field. Only valid if @Scheduled_Time is populated. The number of hours the dispatch job is expected to take.
listDispatch
Return a list of Records headers based on status, only included RecordKey, and base header fields(MobileNumber, Date Completed, Date Submitted).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:listDispatch>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_int>[DispatchStatus]</arg2_int>
<arg3_int>[ResponseFormat]</arg3_int>
</ser:listDispatch>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [DispatchStatus]: 1 = Pending, 2 = Scheduled, 3 = Sent, 4 = Received, 5 = Viewed, 6 = Rejected, 7 = Completed, 100 = All
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
deleteDataByRecordKey
Delete data records by RecordKey.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:deleteDataByRecordKey>
<arg0_java_lang_String>[RecordKeys]</arg0_java_lang_String>
</ser:deleteDataByRecordKey>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [RecordKeys]: The list of the RecordKey separated by a comma (",").
- The RecordKey which is extracted from the "@recordKey" field returned by the "getRecordKeyByDateRange" method.
Returns:
- True: The web service is valid.
- False: The web service is invalid.
deleteData
Delete records by the RecordId.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:deleteData>
<arg0_java_lang_String>[Record IDs]</arg0_java_lang_String>
</ser:deleteData>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [Record IDs] The list of the record ID separated by a comma (","). Note that the record ID is the "Form_Record" field on the View Data tab.
Returns:
- 0 = Success
- -1 = System error
- -2 = No record found
deleteDispatch
Deletes Dispatch records based on RecordKeys.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:deleteDispatch>
<arg0_java_lang_String>[WS ID]</arg0_java_lang_String>
<arg1_java_lang_String>[Password]</arg1_java_lang_String>
<arg2_java_lang_String>[RecordKeys]</arg2_java_lang_String>
<arg3_int>[ResponseFormat]</arg3_int>
</ser:deleteDispatch>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [RecordKeys]: the list of the RecordKey concatenated by a comma
- [ResponseFormat]: 1=CSV, 2=XML, 3=JSON
getLookupTableList
Return the Lookup Table list that includes only the Lookup Table key, name, description and the column list.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getLookupTableList>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_int>[ResponseFormat]</arg3_int>
</ser:getLookupTableList>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
An example of a reponse in CSV format:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Root version="1.0"> <StatusCode>200</StatusCode> <ErrorMessage>Success</ErrorMessage> <Data> <error_message/> <error_code/> <Result> <![CDATA[key, tableName, description, columnsName aglteWRvZm9ybXNyFQsSDkxvb2t1cFRhYmxlTXN0GIIGDA,"DS1","Sample Table 1","STATION,STATION_NAME,ELEVATION,LATITUDE,LONGITUDE,DATE,HLY-CLDH-NORMAL,Completeness Flag,HLY-HTDH-NORMAL,Completeness Flag" aglteWRvZm9ybXNyFQsSDkxvb2t1cFRhYmxlTXN0GJEGDA,"DS2","Sample Table 2","STATION,STATION_NAME,ELEVATION,LATITUDE,LONGITUDE,DATE,HLY-CLDH-NORMAL,Completeness Flag,HLY-HTDH-NORMAL,Completeness Flag"]]> </Data> </Root>
getLookupTableData
Get the content of a Lookup Table. Note that this method is subject to the Use Limits described above.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getLookupTableData>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[LU KEY]</arg3_java_lang_String>
<arg4_int>[OFFSET]</arg4_int>
<arg5_int>[LIMIT]</arg5_int>
<arg6_int>[ResponseFormat]</arg6_int>
</ser:getLookupTableData>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [LU KEY]: The Lookup Table key which returned by getLookupTableList
- [OFFSET]: The row position will be returned
- [LIMIT]: The number of rows will be returned (Note: return all rows if [LIMIT] is -1.)
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
An example of a reponse in CSV format
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Root version="1.0"> <StatusCode>200</StatusCode> <ErrorMessage>Success</ErrorMessage> <Data> <error_message/> <error_code/> <Result> <![CDATA["STATION","STATION_NAME","ELEVATION","LATITUDE","LONGITUDE","DATE","HLY-CLDH-NORMAL","Completeness Flag","HLY-HTDH-NORMAL","Completeness Flag" "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 00:00","0","C","375","C" "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 01:00","0","C","380","C" "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 02:00","0","C","384","C"]]> </Result> </Data> </Root>
addLookupTableData
Add a new Lookup Table. Note that this method is subject to the Use Limits described above.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:addLookupTableData>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[LU NAME]</arg3_java_lang_String>
<arg4_java_lang_String>[DESCRIPTION]</arg4_java_lang_String>
<arg5_java_lang_String>[DATA SOURCE]</arg5_java_lang_String>
<arg6_int>[ResponseFormat]</arg6_int>
</ser:addLookupTableData>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [LU NAME]: The Lookup Table name
- [DESCRIPTION]: The Lookup Table description
- [DATA SOURCE]: The datasource in CSV format. The @END_LINE; is used as a carriage return for each row and the first row is the header.
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
An example DATA SOURCE parameter:
"STATION","STATION_NAME","ELEVATION","LATITUDE","LONGITUDE","DATE","HLY-CLDH-NORMAL","Completeness Flag","HLY-HTDH-NORMAL","Completeness Flag"@END_LINE;"GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 00:00","0","C","375","C"@END_LINE; "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 01:00","0","C","380","C"
updateLookupTableData
Update an existing Lookup Table. Note that this method is subject to the Use Limits described above.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:updateLookupTableData>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[LU NAME]</arg3_java_lang_String>
<arg4_java_lang_String>[DESCRIPTION]</arg4_java_lang_String>
<arg5_java_lang_String>[LU KEY]</arg5_java_lang_String>
<arg6_java_lang_String>[DATA SOURCE]</arg6_java_lang_String>
<arg7_int>[ResponseFormat]</arg7_int>
</ser:updateLookupTableData>
</soapenv:Body>
</soapenv:Envelope>
- Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [LU NAME]: The Lookup Table name
- [DESCRIPTION]: The Lookup Table description
- [LU KEY]: The Lookup Table key which returned by getLookupTableList
- [DATA SOURCE]: The datasource in CSV format. The @END_LINE; is used as a carriage return for each row and the first row is the header. Note: the number of fields in the new datasource must be same withthe current datasource.
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
An example DATA SOURCE:
"STATION","STATION_NAME","ELEVATION","LATITUDE","LONGITUDE","DATE","HLY-CLDH-NORMAL","Completeness Flag","HLY-HTDH-NORMAL","Completeness Flag"@END_LINE;"GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 00:00","0","C","375","C"@END_LINE; "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 01:00","0","C","380","C"
appendLookupTableData2
Append new rows to an existing Lookup Table. Note that this method is subject to the Use Limits described above.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:appendLookupTableData2>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[LU NAME]</arg3_java_lang_String>
<arg4_java_lang_String>[DESCRIPTION]</arg4_java_lang_String>
<arg5_java_lang_String>[LU KEY]</arg5_java_lang_String>
<arg6_java_lang_String>[DATA SOURCE]</arg6_java_lang_String>
<arg7_int>[RESPONSE FORMAT]</arg7_int>
<arg8_int>[COMPLETE]</arg8_int>
</ser:appendLookupTableData2>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [LU NAME]: The Lookup Table name
- [DESCRIPTION]: The Lookup Table description
- [LU KEY]: The Lookup Table key which returned by getLookupTableList
- [DATA SOURCE]: The datasource in CSV format. The @END_LINE; is used as a carriage return for each row and the first row is the header. Note: the number of fields in the new datasource must be same with the current datasource.
- [RESPONSE FORMAT]: 1 = CSV, 2 = XML, 3 = JSON
- [COMPLETE]: 1 if this is the last append call. 0 if additional append calls will be made.
An example DATA SOURCE:
"STATION","STATION_NAME","ELEVATION","LATITUDE","LONGITUDE","DATE","HLY-CLDH-NORMAL","Completeness Flag","HLY-HTDH-NORMAL","Completeness Flag"@END_LINE; "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 00:00","0","C","375","C"@END_LINE; "GHCND:USW00003947","KANSAS CITY INTERNATIONAL AIRPORT MO US","306.3","39.2972","-94.7306","20100101 01:00","0","C","380","C"
deleteLookupTableData
Delete all rows of an existing Lookup Table.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:deleteLookupTableData>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[LU KEY]</arg3_java_lang_String>
<arg4_int>[ResponseFormat]</arg4_int>
</ser:deleteLookupTableData>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [LU KEY]: The Lookup Table key which returned by getLookupTableList
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
getMobileUnits
Get a list of all the mobile units connected to an account.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getMobileUnits>
<arg0_java_lang_String>>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</</arg2_java_lang_String>
<arg3_int>[ResponseFormat]</arg3_int>
</ser:getMobileUnits>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON
getGPSTrackingPoints
Get all the tracking points that are within a certain date range (created and received on the mobile devices) for a specific mobile unit.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="services.wss.portal.doForms.mdt.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getGPSTrackingPoints>
<arg0_java_lang_String>[ACCOUNT NAME]</arg0_java_lang_String>
<arg1_java_lang_String>[EMAIL]</arg1_java_lang_String>
<arg2_java_lang_String>[PASSWORD]</arg2_java_lang_String>
<arg3_java_lang_String>[MOBILE KEY]</arg3_java_lang_String>
<arg4_java_lang_String>["FROM" DATE]</arg4_java_lang_String>
<arg5_java_lang_String>["TO" DATE]</arg5_java_lang_String>
<arg6_int>[ResponseFormat]</arg6_int>
</ser:getGPSTrackingPoints>
</soapenv:Body>
</soapenv:Envelope>
Where:
- [ACCOUNT NAME]: your doForms account name
- [EMAIL]: The email address which used to login into mydoForms
- [PASSWORD]: The password which used to login into mydoForms
- [MOBILE KEY]: The mobile key which returned by the getMobileUnits method
- ["FROM" DATE]: the date:time when the GPS values are created and received on the mobile device
- ["FROM" DATE]: the date:time when the GPS values are created and received on the mobile device
- [ResponseFormat]: 1 = CSV, 2 = XML, 3 = JSON, 4 = KML, 5 = GPX
Deprecated Methods
Although deprecated methods remain in the API, their use is discouraged, and deprecation indicates that the feature may be removed in the future.
Features are deprecated rather than immediately removed in order to provide backward compatibility, and to allow time to bring existing code into compliance with the new standard.
The following methods are deprecated:
- appendLookupTableData
- deleteData getFormTemplate
- getFormDataWithDateRange
- getDataByRecordKey
- getDataByRecordKey2
- getDataByRecordKey3
- getDataByRecordKey4
- getDataByRecordKey5
- getDataByRecordKey6
- getDataByRecordKey7
- getDataByRecordKey8
- getGPSTrackingPointsByMobileNumber
- getRecordKeyByDateRange
- getRecordKeyByDateRange2
- getRecordKeyByEditedDateRange
- getRecordKeyByEditedDateRange2
- getRecordKeyByReceivedDateRange
- getRecordKeyByReceivedDateRange2
- getUnReadData
- getUnReadData2
- getWsIDList
- getWsIDList2
- submissionDispatch
Sample Code
Please note these sample are not meant for production use. Review the documentation before adapting any code listed here for your own use.