Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Symptom : Rest API call fails when first character of column starts with underscore “_” https://sp2016/_api/web/lists/getbytitle('Documents')/items/?$select=_Enddate
Using Internet explorer , we can see the response as 400 Bad request
You may see a different error message when the same URL is accessed using a non-IE browser.
eg:
The corresponding SharePoint ULS shows the following stack
| Exception occured in scope Microsoft.SharePoint.SPListItemEntityCollection ._SerializeToOData. Exception=Microsoft.SharePoint.SPException: Column '_EndDate' does not exist. It may have been deleted by another user.at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilder.SetFieldRef(XmlWriter writer, String fieldPath, FieldRefUsage fieldRefUsage, Action`1 attributeAction)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilderUtilities.SetWhereBinaryOp[T](XmlWriter writer, EdmParserNode parseNode, SetFieldRefDelegate`1 setFieldRef, SetValueDelegate`1 setValue, GetConvertedValueDelegate getConvertedValue)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilderUtilities.SetWhereInternal[T](XmlWriter writer, EdmParserNode parseNode, SetFieldRefDelegate`1 setFieldRef, SetValueDelegate`1 setValue, GetConvertedValueDelegate getConvertedValue)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilderUtilities.SetWhereBinaryOp[T](XmlWriter writer, EdmParserNode parseNode, SetFieldRefDelegate`1 setFieldRef, SetValueDelegate`1 setValue, GetConvertedValueDelegate getConvertedValue)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilderUtilities.SetWhereInternal[T](XmlWriter writer, EdmParserNode parseNode, SetFieldRefDelegate`1 setFieldRef, SetValueDelegate`1 setValue, GetConvertedValueDelegate getConvertedValue)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilderUtilities.SetWhere[T](XmlWriter writer, EdmParserNode parseNode, SetFieldRefDelegate`1 setFieldRef, SetValueDelegate`1 setValue, GetConvertedValueDelegate getConvertedValue)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilder.SetViewQuery(SPQuery query, XmlWriter writer, StringBuilder sb)at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilder.BuildCamlQuery()at Microsoft.SharePoint.SPListItemEntityCollectionCamlQueryBuilder..ctor(SPList list, RESTfulQuery restQuery, Nullable`1 itemId)at Microsoft.SharePoint.SPListItemEntityCollectionQuery..ctor(SPList list, RESTfulQuery restQuery, Nullable`1 itemId)at Microsoft.SharePoint.SPListItemEntityCollection.TryWriteAsOData(ServerStub serverStub, ODataWriter writer, RESTfulQuery query, ProxyContext proxyContext)at Microsoft.SharePoint.Client.ServerStub.Write(Object value, Uri path, ODataWriter writer, RESTfulQuery query, ProxyContext proxyContext) |
Cause /Reason:
This is a limitation of OData protocol which does not allow “_” to be the first character. Therefore, SharePoint prefixes OData_ to the internal name, if the field name starts with an underscore and workaround is to do the same manually in our rest api query.
Workaround:
Prefix OData_ manually in the rest api query
The sample query will look like following https://sp2016/_api/web/lists/getbytitle('Documents')/items/?$select=OData__Enddate
Note: There are 2 underscores in above query OData__Enddate 
Note : Some of the OOB columns which starts with underscore and rest call to them fails
| _DCDateModified |
| _Author |
| _dlc_Exempt |
| _Level |
| _Enddate |
| _UIVersionString |
| _vti_ItemDeclaredRecord |
| _dlc_DocId |
| _EditMenuTableStart2 |
| _UIVersion |
| _Status |
| _dlc_DocIdUrl |
| _EndDate |
| _Relation |
| _Identifier |
| _HasCopyDestinations |
| _CopySource |
| _ResourceType |
| _CheckinComment |
| _Contributor |
| _dlc_DocIdPersistId |
| _dlc_ExpireDateSaved |
| _Revision |
| _SourceUrl |
| _Photo |
| _Publisher |
| _Version |
| _EditMenuTableStart |
| _Coverage |
| _Comments |
| _LastPrinted |
| _vti_ItemHoldRecordStatus |
| _RightsManagement |
| _Category |
| _Source |
| _Format |
| _dlc_ExpireDate |
| _DCDateCreated |
| _vti_ItemIsLocked |
| _IsCurrentVersion |
| _SharedFileIndex |
| _ModerationComments |
| _ModerationStatus |
| _EditMenuTableEnd |
POST By : Brijesh Poddar [MSFT]

