title: Specifying the fields to send on an 'update' command using the Kendo UI Framework Data Source
body: <p>I am using the <strong>Data Source</strong> object to connect to a SharePoint 2013 ODATA source using REST and then use this as the data for a <strong>Kendo UI Grid</strong>.</p>
  
  <p>The <strong>Data Source</strong> reads the list correctly and populates the grid, but when I update an item in the <strong>Kendo UI Grid</strong> the following error is returned by the REST end point.</p>
  
  <blockquote>
    <p>The property '__deferred' does not exist on type 'SP.SecurableObject'.
    Make sure to only use property names that are defined by the type.</p>
  </blockquote>
  
  <p>This is caused by the <strong>Data Source</strong> returning all the properties from the initial read request and then returning in the update command. </p>
  
  <p>SharePoint returns __deferred properties with a REST URL to defer loading, but is throwing a wobbly if they are returned back in an update command request.</p>
  
  <p>Below is my <strong>Data Source</strong></p>
  
  <pre><code>var dataSource = new kendo.data.DataSource({
          type: "odata",
          transport: {
              read: {
                  url: listUrl,
                  type: "GET",
                  dataType: "json",
                  contentType: "application/json;odata=verbose",
                  headers: {
                      "accept": "application/json;odata=verbose"
                  }
              },
              create: {
                  url: listUrl,
                  type: "POST",
                  dataType: "json",
                  contentType: "application/json;odata=verbose",
                  headers: {
                      "accept": "application/json;odata=verbose",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                  }
              },
              update: {
                  url: function (data) {
                      return listUrl + "(" + data.ID + ")";
                  },
                  beforeSend: function (jqXhr, options) {
  
                      var data = JSON.parse(options.data);
  
                      jqXhr.setRequestHeader("If-Match", data.__metadata.etag);
  
                  },
                  type: "POST",
                  dataType: "json",
                  contentType: "application/json;odata=verbose",
                  headers: {
                      "accept": "application/json;odata=verbose",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                      "X-HTTP-Method": "MERGE"
                  },
              },
              destroy: {
                  url: function (data) {
                      return listUrl + "(" + data.ID + ")";
                  },
                  type: "DELETE",
                  dataType: "json",
                  contentType: "application/json;odata=verbose",
                  headers: {
                      "accept": "application/json;odata=verbose",
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                      "X-HTTP-Method": "MERGE",
                      "If-Match": "*"
                  }
              }
          },
          pageSize: 20,
          schema: {
              data: "d.results",
              model: {
                  id: "ID",
                  fields: {
                      ID: { editable: false, nullable: false },
                      Title: { validation: { required: true } },
                      Body1: { validation: { required: true } },
                      Votes: { type: "number", validation: { required: true, min: 1 } },
                  }
              }
          }
      });
  </code></pre>