cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MichaelBoehnke
Frequent Visitor

Update list item via SharePoint REST API

Dear community,

 

I am trying to set the Field "Title" in a list item to a new value by using the SP REST API. For reference, I followed the documentation about updating list items

 

My update step looks like this

 

 

POST /[uri]/GetByTitle('Pages')/Items(8)

Headers
{
  "If-Match": "*",
  "X-HTTP-Method": "MERGE",
  "Accept": "application/json;odata=verbose",
  "Content-Type": "application/json"
}

Body
{
  '__metadata': {
    'type': 'SP.Data.PagesItem'
  },
  'Title': 'newTitle'
}

 

 

The response is

 

 

{
  "status": 400,
  "message": "The property '__metadata' does not exist on type 'SP.Data.PagesItem'. Make sure to only use property names that are defined by the type.\r\nclientRequestId: 6d32167d-5a15-44e4-8e22-0be00a17a2c9\r\nserviceRequestId: ce964a9f-b048-2000-6cd2-3e91db9c86af",
  "source": "[uri]/_api/web/lists/GetByTitle('Pages')/items(8)",
  "errors": [
    "-1",
    "Microsoft.SharePoint.Client.InvalidClientQueryException"
  ]
}

 

 

 Strangely enough, when getting this item like so

 

 

GET [uri]/_api/web/lists/GetByTitle('Pages')/Items?$select=Id,%20Title,%20FileRef&$filter=FileRef%20eq%20%27[uri]/Pages/[pagename].aspx%27

 

 

I receive this

 

 

{
  "d": {
    "results": [
      {
        "__metadata": {
          "id": "24a84d64-f9f5-42f2-b487-43048e8d5889",
          "uri": "[uri]/_api/Web/Lists(guid'68025e38-a5b3-4181-be51-b3a7f737d373')/Items(8)",
          "etag": "\"191\"",
          "type": "SP.Data.PagesItem"
        },
        "Id": 8,
        "Title": "[pagetitle]",
        "ID": 8,
        "FileRef": "[uri]/[pagename].aspx"
      }
    ]
  }
}

 

 

 This shows me, that there is indeed a property '__metadata' and the type 'SP.Data.PagesItem' is also correct. So why is it not working? 🙂

 

Thanks for your help,

 

Michael

1 ACCEPTED SOLUTION

Accepted Solutions

Dear @fchopo, it is working now! Turns out, I have to checkout the page first, set the title and then check it back in.

 

My renaming step has the following body now; as you can see the type is equal to the type of the list item

 

{
  "__metadata": {
    "type": "SP.Data.PagesItem"
  },
  "Title": "sdjkfslfjslfjslfjsldfjsfsdfsdfs"
}

 Thanks again for your time and help 🙂

View solution in original post

8 REPLIES 8
MichaelBoehnke
Frequent Visitor

Thanks @GabrielStJohn for unblocking this topic 🙂

fchopo
Super User II
Super User II

Hello @MichaelBoehnke 

Have you tried to use 'type': 'SP.List' like it was a list item?

Hope it helps!

Ferran

Did I answer your question? Please consider to mark my post as a solution to help others.
Proud to be a Flownaut!

Hi @fchopo,

 

following your suggestion I've tried

{
  '__metadata': {
    'type': 'SP.List.ListItem'
  },
  'Title': '[pagetitle]'
}

This gives me:

{
  "status": 400,
  "message": "The property '__metadata' does not exist on type 'SP.Data.PagesItem'. Make sure to only use property names that are defined by the type.\r\nclientRequestId: 36078987-9442-43ad-b2f5-6bae7881192d\r\nserviceRequestId: a6f64a9f-800e-2000-6cd2-3be9992c4e5b",
  "source": "[uri]/_api/web/lists/GetByTitle('Pages')/items(8)",
  "errors": [
    "-1",
    "Microsoft.SharePoint.Client.InvalidClientQueryException"
  ]
}

 so it looks like the "real" type for the list item is read and my type "SP.List.ListItem" in the request body is ignored.

 

This is really strange.

Hello @MichaelBoehnke 

I've tried this in my environment and it is working on a list called "Expenses":

 post.png

 

Could you check the values are similar in your case?

Hope it helps!

Ferran

Did I answer your question? Please consider to mark my post as a solution to help others.
Proud to be a Flownaut!

Dear @fchopo, I've changed the step as per your suggestion (please note that I have thus removed the accept header)

 

screenshot-emea.flow.microsoft.com-2020.04.21-18_44_23.png

 

Now I get

 

{
  "status": 400,
  "message": "A type named 'SP.Data.PagesListItem' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.\r\nclientRequestId: 7183eedb-5e49-4eea-abd2-5661b3b66bae\r\nserviceRequestId: c8fc4a9f-b057-2000-03d0-e9b1821e8a58",
  "source": "https://[uri]/groups/653/_api/web/lists/GetByTitle('Pages')/items(8)",
  "errors": [
    "-1",
    "Microsoft.SharePoint.Client.InvalidClientQueryException"
  ]
}

 If I change it back now to

{
  "__metadata": {
    "type": "SP.Data.PagesItem"
  },
  "Title": "newTitle"
}

the flow just does not finish and runs forever. If I step into the running flow into this step I an see that there was at least one retry and there's an error message

flow_bad_gateway.PNG

 

I don't know if it's important, but what I am actually trying to achieve is changing the title of a classic SharePoint page (.aspx), which is under [uri]/Pages and should also be a list item of the 'Pages' list.

 

Thanks again!

Hello @MichaelBoehnke 

I have used the following expression and it is working!

sitePages.png

Hope it helps!

Ferran

Did I answer your question? Please consider to mark my post as a solution to help others.
Proud to be a Flownaut!

Dear @fchopo, still not working:

{
  "message": "A type named 'SP.Data.SitePagesItem' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.\r\nclientRequestId: 39b5278c-d39c-47f3-9b3f-cf6dd7ff32b5\r\nserviceRequestId: a3014b9f-70b0-2000-cb79-956bdc67fd31",
  "status": 400,
  "source": "[uri]/_api/web/lists/GetByTitle('Pages')/items(8)",
  "errors": [
    "-1",
    "Microsoft.SharePoint.Client.InvalidClientQueryException"
  ]
}

This error message looks right to me, as I am trying to edit an item in list 'Pages' and not 'SitePages' as in your example. Does your example work for you when you try it for a list item in list 'Pages'? Thanks!

Dear @fchopo, it is working now! Turns out, I have to checkout the page first, set the title and then check it back in.

 

My renaming step has the following body now; as you can see the type is equal to the type of the list item

 

{
  "__metadata": {
    "type": "SP.Data.PagesItem"
  },
  "Title": "sdjkfslfjslfjslfjsldfjsfsdfsdfs"
}

 Thanks again for your time and help 🙂

View solution in original post

Helpful resources

Announcements
MPA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

MBAS Attendee Badge

Claim Your Badge & Digital Swag!

Check out how to claim yours today!

secondImage

Are Your Ready?

Test your skills now with the Cloud Skill Challenge.

Top Solution Authors
Users online (70,761)