---
title: "Reading from the API"
url: "https://helpcentre.esayworkmobile.co.uk/en/article/reading-from-the-api"
language: "en"
last_updated: "2023-11-02T13:35:31.425Z"
---

# 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:

```plaintext
GET /api/Forms
```

This will return a response similar to below:

```plaintext
[
   {
       "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:

```plaintext
/api/Forms/196495
```

This would return something such as:

```plaintext
{
   "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).

```plaintext
/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

```plaintext
/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
