The handle of the app is 1.
                        1. Create a sheet SH01 (qId is SH01) in the app.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 1,
  "method": "CreateObject",
  "handle": 1,
  "params": [
    {
      "title": "Sheet1",
      "description": "Description of sheet 1",
      "qInfo": {
        "qId": "SH01",
        "qType": "sheet"
      },
      "qChildListDef": {
        "qData": {
          "title": "/title",
          "description": "/description",
          "meta": "/meta",
          "order": "/order",
          "type": "/qInfo/qType",
          "id": "/qInfo/qId",
          "lb": "/qListObjectDef",
          "hc": "/qHyperCubeDef"
        }
      }
    }
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "qReturn": {
      "qType": "GenericObject",
      "qHandle": 2
    },
    "qInfo": {
      "qId": "SH01",
      "qType": "sheet"
    }
  },
  "change": [
    2
  ]
}
                        The sheet is created and its handle is 2. 
                        2.  Create a list object LB01 (qId is LB01) in the sheet. The list object has Country (qFieldDefs is Country) as a dimension.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 2,
  "method": "CreateChild",
  "handle": 2,
  "params": [
    {
      "qInfo": {
        "qId": "LB01",
        "qType": "ListObject"
      },
      "qListObjectDef": {
        "qStateName": "$",
        "qLibraryId": "",
        "qDef": {
          "qFieldDefs": [
            "Country"
          ],
          "qFieldLabels": [
            "Country Label"
          ],
          "qSortCriterias": [
            {
              "qSortByLoadOrder": 1
            }
          ]
        },
        "qInitialDataFetch": [
          {
            "qTop": 0,
            "qHeight": 1,
            "qLeft": 0,
            "qWidth": 1
          }
        ]
      },
      "title": "Title for ListObject01"
    }
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "qReturn": {
      "qType": "GenericObject",
      "qHandle": 3
    },
    "qInfo": {
      "qId": "LB01",
      "qType": "ListObject"
    }
  },
  "change": [
    3
  ]
}
                        The list object is created and its handle is 3. 
                        3. Select the first element number (qValues is 0) in the list object (qPath is /qListObjectDef).
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 3,
  "method": "SelectListObjectValues",
  "handle": 3,
  "params": [
    "/qListObjectDef",
    [
      0
    ],
    false
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "qSuccess": true
  },
  "change": [
    3
  ]
}
                        The selection is successful.
                         4. Retrieve the first three values of the list object (qTop is 0 and qHeight is 3).
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 4,
  "method": "GetListObjectData",
  "handle": 3,
  "params": [
    "/qListObjectDef",
    [
      {
        "qTop": 0,
        "qHeight": 3,
        "qLeft": 0,
        "qWidth": 1
      }
    ]
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "qDataPages": [
      {
        "qMatrix": [
          [
            {
              "qText": "United States",
              "qNum": "NaN",
              "qElemNumber": 0,
              "qState": "S"
            }
          ],
          [
            {
              "qText": "Denmark",
              "qNum": "NaN",
              "qElemNumber": 1,
              "qState": "X"
            }
          ],
          [
            {
              "qText": "Spain",
              "qNum": "NaN",
              "qElemNumber": 2,
              "qState": "X"
            }
          ]
        ],
        "qTails": [],
        "qArea": {
          "qLeft": 0,
          "qTop": 0,
          "qWidth": 1,
          "qHeight": 3
        }
      }
    ]
  }
}
                        The value United States is selected.
                        5. Create a bookmark BM01 (qId is BM01). The handle of the request is 1 because the CreateBookmark method applies at the app level.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 5,
  "method": "CreateBookmark",
  "handle": 1,
  "params": [
    {
      "qInfo": {
        "qId": "BM01",
        "qType": "Bookmark"
      }
    }
  ]
}
                         The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 5,
  "result": {
    "qReturn": {
      "qType": "GenericBookmark",
      "qHandle": 4
    },
    "qInfo": {
      "qId": "BM01",
      "qType": "Bookmark"
    }
  },
  "change": [
    4
  ]
}
                        The bookmark is created and the handle is 4.
                        6. Get the handle of the field Country. The handle of the request is 1 because the GetField method applies at the app level.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 6,
  "method": "GetField",
  "handle": 1,
  "params": [
    "Country"
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 6,
  "result": {
    "qReturn": {
      "qType": "Field",
      "qHandle": 5
    }
  }
}
                        The handle of the field Country is 5.
                        7. Clear the field. The handle of the request is 5 because the field to clear has 5 as a handle.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 7,
  "method": "Clear",
  "handle": 5,
  "params": []
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "qReturn": true
  },
  "change": [
    1,
    3,
    5
  ]
}
                        The field Country is cleared of selections.
                        8. Retrieve the first three values (qTop is 0 and qHeight is 3) of the list object. The handle of the request is 3 because the list object has 3 as a handle.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 8,
  "method": "GetListObjectData",
  "handle": 3,
  "params": [
    "/qListObjectDef",
    [
      {
        "qTop": 0,
        "qHeight": 3,
        "qLeft": 0,
        "qWidth": 1
      }
    ]
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 8,
  "result": {
    "qDataPages": [
      {
        "qMatrix": [
          [
            {
              "qText": "United States",
              "qNum": "NaN",
              "qElemNumber": 0,
              "qState": "O"
            }
          ],
          [
            {
              "qText": "Denmark",
              "qNum": "NaN",
              "qElemNumber": 1,
              "qState": "O"
            }
          ],
          [
            {
              "qText": "Spain",
              "qNum": "NaN",
              "qElemNumber": 2,
              "qState": "O"
            }
          ]
        ],
        "qTails": [],
        "qArea": {
          "qLeft": 0,
          "qTop": 0,
          "qWidth": 1,
          "qHeight": 3
        }
      }
    ]
  }
}
                        All values are in the optional state.
                        9. Apply the bookmark BM01.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 9,
  "method": "ApplyBookmark",
  "handle": 1,
  "params": [
    "BM01"
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 9,
  "result": {
    "qSuccess": true
  },
  "change": [
    1,
    3,
    5
  ]
}
                        The bookmark is successfully applied.
                        10. Retrieve the first three values (qTop is 0 and qHeight is 3) of the list object. The handle of the request is 3 because the list object has 3 as a handle.
                        The client sends:
                        {
  "jsonrpc": "2.0",
  "id": 10,
  "method": "GetListObjectData",
  "handle": 3,
  "params": [
    "/qListObjectDef",
    [
      {
        "qTop": 0,
        "qHeight": 3,
        "qLeft": 0,
        "qWidth": 1
      }
    ]
  ]
}
                        The engine returns:
                        {
  "jsonrpc": "2.0",
  "id": 10,
  "result": {
    "qDataPages": [
      {
        "qMatrix": [
          [
            {
              "qText": "United States",
              "qNum": "NaN",
              "qElemNumber": 0,
              "qState": "S"
            }
          ],
          [
            {
              "qText": "Denmark",
              "qNum": "NaN",
              "qElemNumber": 1,
              "qState": "X"
            }
          ],
          [
            {
              "qText": "Spain",
              "qNum": "NaN",
              "qElemNumber": 2,
              "qState": "X"
            }
          ]
        ],
        "qTails": [],
        "qArea": {
          "qLeft": 0,
          "qTop": 0,
          "qWidth": 1,
          "qHeight": 3
        }
      }
    ]
  }
}
                        The value United States is selected (same result as in step 4).