I have a Sharepoint Library with a Person column "Process Owner". ONE person only.
I have an Instant Workflow on that library that collects Process Owner Name at runtime.
How can I use the HTTP / POST (or PATCH) to accomplish this?
I've tried various forms of PATCH, POST... based on other sites/articles. Nothing works. For example
results in this error: A type named 'SP.Data.VBPM_x0020_Process_x0020_DraftsListItem' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.
didn't throw an error. It appeared to complete successfully, but did not actually update anything.
The parameter entered gets plugged into HTTP call to "getByEmail" and returns a numeric value which I store in ProcessOwnerID, used as the value above.
Thanks in advance for any guidance.
(I cannot use Update Library Properties action because of the MS limit on # lookups )
Solved! Go to Solution.
@MelissaReed in addition to inputs from @Expiscornovus you can change the header odata=nometadata, to make the payload simple, example below
Hi @MelissaReed,
Below is an example which should work. In my example I am using a POST request and the SharePoint User Id of the current site like described in this link:
Btw, I am also using a LibraryItem type because I assume you are using a Document Library and not a List?
{
"__metadata": {
"type": "SP.Data.VBPM_x0020_Draft_x0020_Process_x0020_LibraryItem"
},
"ProcessOwnerId": 12
}
@MelissaReed in addition to inputs from @Expiscornovus you can change the header odata=nometadata, to make the payload simple, example below
Thanks @annajhaveri. I keep forgetting that with nometadata it's even easier 🙂
Thanks @annajhaveri and @Expiscornovus for speedy replies.
YES, @Expiscornovus -- it is a Library I'm working with. Good catch on that detail I overlooked including!
I like "simpler" so I tried @annajhaveri "nometadata" first but couldn't get it to work.
Tried it with/without quotes, both blew errors -- "A 'PrimitiveValue' node with non-null value was found...."
What am I missing here? @annajhaveri your example does not mention "librarylist" but maybe the answer lies within the detail of the pink "body()" variable I can't see the details of on your screenshot.
@MelissaReed in the body parameter provide the column name as "Process_x0020_OwnerId"
@annajhaveri DUH -- thanks for the catch on the missing "Id" . It WORKED.
And note to the wise, it is case-sensitive -- you must use "Id" and not "ID".
For others' reference, here is the HTTP call that successfully updated my two Person fields on my library:
I wanted to show how column names with spaces are represented in this context (most examples don't show it and it's never made sense to me whether to use %20, _x0020_, put the literal name in quotes or drop the spaces and smash them together.
I struggled with this for HOURS and probably came within a quotemark of hitting on the right syntax, but am so grateful to both of you @Expiscornovus and @annajhaveri for your help. I will tag @annajhaveri with the solution since it was her nometadata option I'm going with. But @Expiscornovus it was an earlier HTTP post you were helping someone out with that put me on this track to begin with. Thank you both!
@MelissaReed thank you. One more tip, Process_x0020_OwnerId is the internal name of the column. In order to get internal name of any column, in google chrome browser, open the SharePoint list, go to list settings and click on the column, then look at the browser URL, you will see URL ending with Field=<somevalue>, that will be the internal name of the column, e.g. if it is Field=Title in the browser url, then Title is the internal name of the column. I hope that makes sense.