The Form Entries API provides access to form entry data submitted by users. Data retrieved can be filtered by Form code and date range.
Form Entry data is retrieved as “Raw” entry data – i.e. the raw answer values in hierarchical form.
We plan to release a more full featured Form Entries API in the future, which will include more detail such as the data type of each answer value.
On the Cloud this API is available via SSL secured HTTPS connection using the REST GET verb:
Raw Form Entries:
Answer Data Types
The various Form field types and their associated answer data formats are outlined below.
Form Entry data is returned according to these data formats.
|Question Type||Answer Data Format||Description|
|Text||String||Answers are provided in raw string format with no escaping|
|Number||String||Numbers are provided as strings, with decimal places intact when specified. No formatting (e.g. currency, thousand separators) is applied.|
|Date & Time||String
|Date and time as recorded by the user. Time zone is UTC; time is in 24 hour values.
The “T” and “Z” in the format are delimiters.
This format is also known as extended ISO-8601.
|Date as recorded by the mobile user. The date has no time or time zone information|
|Time as recorded by the mobile user. The time has no time zone information.|
|Choices||String||The value(s) of the option(s) selected by the user. For multiple choice questions, the answers are packed into this single string, separated by a pipe character (“|”).|
lat long altitude accuracy
|The geographic point as recorded by the user, based on the ISO 6709 format. Latitude and longitude values are in decimal degrees, altitude and accuracy are in metres.
Points that are chosen from a map are always reported as having 0 altitude and 5 accuracy.
|Media and Drawings||String||The file name of the media file recorded by the user. Generally images are in JPG format, audio is in WAV or 3GP, video in MP4 or MOV.This file name must be used in a Media API call in order to retrieve the actual file contents. See Media API below.|
|Barcode||String||The raw string value extracted from the barcode or QR code|
|Groups, Checklists, Geolists||Collection||Groups are included in Raw Form Entries as an enclosing collection which contains all questions within that group.
For Flat Form Entries, groups are not included in the data output, since any repeats of data imply a repeatable group.
The required and optional parameters for a GET call to the Raw Form Entries API are outlined below.
|Parameter Name||Data Type||Required||Description|
|Format||String||Yes||Specifies the desired format of the response.
Must either JSON or XML.
|ProviderId||Integer||Yes||Your unique Provider Id found on the Organisation Setup page of the secure website (under Your Account).|
|Integrationkey||String||Yes||Your unique Integration key found on the Organisation Setup page of the secure website (under Your Account).|
|FormCode||String||Yes||Code of the Form to fetch entries for. This is the External ID field shown on the form settings.|
|FormVersion||Integer||Yes||Version of the Form that you wish to fetch entries for.
To always get entries for the latest Published version, set this field to zero (0).
|Yes||Only return Form entries completed on or after the given Date and optional Time|
|Yes||Only return Form entries completed on or before the given Date and optional Time|
The data returned from a Raw Form Entries GET is provided as a collection of form entries housed within nested property fields.
Form Entries Response (<FormEntriesRawResponse>)
|Field Name||Data Type||Description|
|Entries||Collection of Raw Form Entry||Collection that contains all form entries found|
|ResponseStatus||ResponseStatus||Contains response errors if any occur – helpful for support and debugging purposes|
Raw Form Entry (<FormEntryRaw>)
|Field Name||Data Type||Description|
|Id||GUID||Unique identifier of the Form Entry|
|FormCode||String||Form code that this Entry relates to|
|FormVersion||Integer||Form version that this Entry relates to|
|UserExternalId||String||The external identifier assigned to this app user. This is for linking users into other systems by a common ID.|
|UserFirstName||String||First name as registered for the app user|
|UserLastName||String||Last name as registered for the app user|
|UserEmail||String||Email address as registered for the app user|
|Date and time the form entry was completed by the user. Time zone is UTC; time is in 24 hour values.
The “T” in the format is a delimiter.
|Latitude of the user when completing the form entry.
This value will be null or 0 when GPS is turned off or fails to capture during form entry.
|Longitude of the user when completing the form entry. This value will be null or 0 when GPS is turned off or fails to capture during form entry.|
|AnswersXml||XML||Raw form entry answers in hierarchical XML format, with a root element named “data”.
Question data names are the XML element names, with answer values enclosed as strings.
This field is only populated when making a XML format request.
|AnswersJSON||JSON||Raw form entry answers in JSON array format.
Question data names are the JSON property names, with answer values enclosed as strings.
This field is only populated when making a JSON format request.
API Usage Example
Given that the API is REST based, you can access the API directly via your web browser to test it.
Obviously for actual integration works, you will need to make a web request to the given REST URL and then parse the response.
Below is a simple GET example which gets the answers for a specific day (23 July 2012), using both the JSON and XML response types.
<FormEntriesRawResponse> <Entries> <FormEntryRaw> <AnswersJson /> <AnswersXml> <data> <name>John Smith</name> <experiencechoice>SECT</experiencechoice> <selectmulti>PB|TT|DX</selectmulti> <MapsGeoPoint>-26.2858679873348 128.688879013062 0 5</MapsGeoPoint> <audio>1029939382883.wav</audio> <photosgroup> <photo>102944442883.jpg</photo> <photo>102955553828.jpg</photo> <photo>443493938286.jpg</photo> </photosgroup> <signagegroup> <stop>1</stop> <caution>1</caution> <barrier>1</barrier> <detour>1</detour> </signagegroup> <integer>2</integer> <datetime>2012-07-23T10:59:30Z</datetime> <dateonly>2012-07-23</dateonly> <timeonly>20:59:36Z</timeonly> </data> </AnswersXml> <CompleteTime>2012-07-23T10:59:47</CompleteTime> <FormCode>DEMO-001</FormCode> <FormVersion>3</FormVersion> <Id>e2098623-4753-4c0b-816c-5b4efaa64be4</Id> <Latitude>-26.2844297653253</Latitude> <Longitude>128.684420511265</Longitude> <UserFirstName>John</UserFirstName> <UserExternalId></UserExternalId> <UserLastName>Smith</UserLastName> </FormEntryRaw> </Entries> <ResponseStatus /> </FormEntriesRawResponse>