Reading from the API

Generally, reading from the API is performed by executing a GET HTTP method to retrieve records/documents on your account.

Often a GET will return all records on the account as a list. For example, to return a list of all forms that are visible to the logged in user:

GET /api/Forms

This will return a response similar to below:

[
   {
       "UserFormId": 185218,
       "Name": "Hazard subform",
       "Description": "",
       "Live": true,
       "MobileVisible": false,
       "LocationAware": false,
       "AutoUpload": false,
       "SaveToDrafts": "1",
       "Subform": "1",
       "LastUpload": "2017-08-10T08:08:00",
       "Created": "2017-08-09T14:58:57.027",
       "CreatedBy": "Jane Doe",
       "Updated": "2021-07-06T16:12:55.79",
       "UpdatedBy": "Jane Doe"
   },
   {
       "UserFormId": 194955,
       "Name": "Weekly Timesheet",
       "Description": "Timesheet Form",
       "Live": false,
       "MobileVisible": false,
       "LocationAware": true,
       "AutoUpload": false,
       "SaveToDrafts": "1",
       "Subform": "0",
       "LastUpload": null,
       "Created": "2020-08-13T14:38:18.767",
       "CreatedBy": "Jane Doe",
       "Updated": "2022-02-21T15:53:39.31",
       "UpdatedBy": "Jane Doe"
   }
]

 

Passing in a specific record id will return will return a full list of fields and attributes related to the form:

/api/Forms/196495

This would return something such as:

{
   "CustomerId": 0,
   "FormId": 196495,
   "Name": "Customer Visit Record",
   "IsDataEditorEnabled": false,
   "IsShareDataEnabled": false,
   "CurrentRevision": 0,
   "StaticFieldNames": [
       {
           "FormFieldId": 0,
           "SysLockCountNum": 0,
           "SysArchived": false,
           "SysCreatedDateTime": "0001-01-01T00:00:00",
           "FieldName": "Created",
           "Sequence": 0,
           "Type": 0,
           "FormId": 0,
           "Required": false,
           "RegexValidationId": 0,
           "ShowCaption": false,
           "MultiLine": false,
           "SubUserFormId": 0,
           "SubUserFormFieldIdSummary1": 0,
           "SubUserFormFieldIdSummary2": 0,
           "SubUserFormFieldIdSummary3": 0,
           "UserImageId": 0,
           "Alignment": 0,
           "ReadOnlyField": false,
           "HiddenField": false,
           "Gallery": false,
           "UniqueName": "Created",
           "Annotate": false,
           "MustChange": false,
           "Size": 0,
           "LocationInfo": false,
           "Searchable": true,
           "FixedOrder": false
       },
       {
           "FormFieldId": 0,
           "SysLockCountNum": 0,
           "SysArchived": false,
           "SysCreatedDateTime": "0001-01-01T00:00:00",
           "FieldName": "CreatedBy",
           "Sequence": 0,
           "Type": 0,
           "FormId": 0,
           "Required": false,
           "RegexValidationId": 0,
           "ShowCaption": false,
           "MultiLine": false,
           "SubUserFormId": 0,
           "SubUserFormFieldIdSummary1": 0,
           "SubUserFormFieldIdSummary2": 0,
           "SubUserFormFieldIdSummary3": 0,
           "UserImageId": 0,
           "Alignment": 0,
           "ReadOnlyField": false,
           "HiddenField": false,
           "Gallery": false,
           "UniqueName": "CreatedBy",
           "Annotate": false,
           "MustChange": false,
           "Size": 0,
           "LocationInfo": false,
           "Searchable": true,
           "FixedOrder": false
       }, 
       .....

Some calls, may accept multiple id's as well as additional query string paramters. From example, to generate a PDF report based on a specified report templave for a specific completed record, you would make the following call (passing in your own id's).

/api/Forms/{Id}/completedrecords/{rowId}/reports?ReportId={reportId}&ReportFormat=1 

The API gives access to all the ids required to create requests.

For example a list of reports defined against a form can be returned with

/api/Forms/{id}/reports

The list of report formats supported can be queried by querying the the optional ReportFormat query string parameter

The core objects within WorkMobile return full lists of objects. So you get a full list of Forms, User Groups and Mobile users. There is no paging on these items. The lists return a subset of attributes and even on some of the larger clients Mobile Users and Forms rarely exceed several thousand items especially when organised into user groups or multiple departmental accounts