we are getting an error parsing JSON from an HTTP Get request in our flow.
Here is the schema we are using in our Parse JSON step:
{ "type": "object", "properties": { "d": { "type": "object", "properties": { "results": { "type": "array", "items": { "type": "object", "properties": { "__metadata": { "type": "object", "properties": { "id": { "type": "string" }, "uri": { "type": "string" }, "type": { "type": "string" } } }, "Alerts": { "type": "object", "properties": { "__deferred": { "type": "object", "properties": { "uri": { "type": "string" } } } } }, "Groups": { "type": "object", "properties": { "__deferred": { "type": "object", "properties": { "uri": { "type": "string" } } } } }, "Id": { "type": "integer" }, "IsHiddenInUI": { "type": "boolean" }, "LoginName": { "type": "string" }, "Title": { "type": "string" }, "PrincipalType": { "type": "integer" }, "Email": { "type": "string" }, "IsEmailAuthenticationGuestUser": { "type": "boolean" }, "IsShareByEmailGuestUser": { "type": "boolean" }, "IsSiteAdmin": { "type": "boolean" }, "UserId": { "type": "object", "properties": { "__metadata": { "type": "object", "properties": { "type": { "type": "string" } } }, "NameId": { "type": "string" }, "NameIdIssuer": { "type": "string" } } } }, "required": [ "__metadata", "Alerts", "Groups", "Id", "IsHiddenInUI", "LoginName", "Title", "PrincipalType", "Email", "IsEmailAuthenticationGuestUser", "IsShareByEmailGuestUser", "IsSiteAdmin", "UserId" ] } } } } } }
we are only interested in the Email property that we want to use to send approvals...
here are the INPUTS results of the Parse JSON step that fails:
{ "d": { "results": [ { "__metadata": { "id": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)", "uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)", "type": "SP.User" }, "Alerts": { "__deferred": { "uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Alerts" } }, "Groups": { "__deferred": { "uri": "https://*********.sharepoint.com/_api/Web/GetUserById(1691)/Groups" } }, "Id": 1691, "IsHiddenInUI": false, "LoginName": "i:0#.f|membership|Surnamei@Company.org.uk", "Title": "Firstname Surname", "PrincipalType": 1, "Email": "Surnamef@Company.org.uk", "Expiration": "", "IsEmailAuthenticationGuestUser": false, "IsShareByEmailGuestUser": false, "IsSiteAdmin": false, "UserId": { "__metadata": { "type": "SP.UserIdInfo" }, "NameId": "10033fff9fe67a30", "NameIdIssuer": "urn:federation:microsoftonline" }, "UserPrincipalName": "Surnamef@Company.org.uk" }, } ] }
here is the schema from the run results of the Parse JSON that fails:
{ "type": "object", "properties": { "d": { "type": "object", "properties": { "results": { "type": "array", "items": { "type": "object", "properties": { "__metadata": { "type": "object", "properties": { "id": { "type": "string" }, "uri": { "type": "string" }, "type": { "type": "string" } } }, "Alerts": { "type": "object", "properties": { "__deferred": { "type": "object", "properties": { "uri": { "type": "string" } } } } }, "Groups": { "type": "object", "properties": { "__deferred": { "type": "object", "properties": { "uri": { "type": "string" } } } } }, "Id": { "type": "integer" }, "IsHiddenInUI": { "type": "boolean" }, "LoginName": { "type": "string" }, "Title": { "type": "string" }, "PrincipalType": { "type": "integer" }, "Email": { "type": "string" }, "IsEmailAuthenticationGuestUser": { "type": "boolean" }, "IsShareByEmailGuestUser": { "type": "boolean" }, "IsSiteAdmin": { "type": "boolean" }, "UserId": { "type": "object", "properties": { "__metadata": { "type": "object", "properties": { "type": { "type": "string" } } }, "NameId": { "type": "string" }, "NameIdIssuer": { "type": "string" } } } }, "required": [ "__metadata", "Alerts", "Groups", "Id", "IsHiddenInUI", "LoginName", "Title", "PrincipalType", "Email", "IsEmailAuthenticationGuestUser", "IsShareByEmailGuestUser", "IsSiteAdmin", "UserId" ] } } } } } }
and here is the erro in the step from the run history:
[ { "message": "Invalid type. Expected Object but got Null.", "lineNumber": 0, "linePosition": 0, "path": "d.results[3].UserId", "schemaId": "#/properties/d/properties/results/items/properties/UserId", "errorType": "type", "childErrors": [] } ]
so how can I change the schema to successfully retrieve the email
Solved! Go to Solution.
So apply to each on body('httpactionname')?['d']?['results']
and then within the loop use
item()?['Email']
Regards,
Reza Dorrani
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
Use
body('httpactionname')?['d']?['results']?[0]?['Email']
Regards,
Reza Dorrani
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
after investigating the group a bit and the JSON, we tried:
_api/web/sitegroups/getbyname('Legal Owners')/users?$filter=UserId+ne+null
as the body of the HTTP Get and it worked...
@RezaDorrani wrote:
Use
body('httpactionname')?['d']?['results']?[0]?['Email']
Regards,
Reza Dorrani
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
hi,
Thanks but we are using an Apply to Each control steop to loop through all the users in the group and send an approval to each one...
would that still work - we are parsing the JSON in order to get the list...
so how could I implement your suggestion in a loop?
So apply to each on body('httpactionname')?['d']?['results']
and then within the loop use
item()?['Email']
Regards,
Reza Dorrani
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
User | Count |
---|---|
61 | |
51 | |
47 | |
27 | |
17 |
User | Count |
---|---|
26 | |
26 | |
21 | |
21 | |
20 |