Forum Discussion
OpenApi document swagger
Hi,
I am loading a swagger.json file using openApi.documet, which is fine.
But if I dont specify the host in swagger.json, the host should be picked up automatically where the swagger.json url is hosted.
eg: http://localhost/swagger/api/v2/bi-api.json
in the above url, localhost is my host, which i dont want to specify in bi-api.json. so the openapi.document must pick up localhost as the host value automatically, which is how it should work as per swagger -api docs.
seer below link for reference:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md
but its not happening. OpenApi.document throws this error on power bi:
DataSource.Error: Host name is not defined in the Open API document.
Any help on priority would be appreciated!
Thanks!
- Anonymous6 years ago
ImkeF Found a solution after various thoughts!
read the whole json object from swagger and then append the host dynamically, before passing the json contents to the open API. document.
Here's the snippet:
swagger = Json.Document(Extension.Contents("swagger.json")), swaggerRecord = Record.AddField(swagger, "host", biHost), // biHost eg: localhost:80
// OpenApi.Document will return a navigation table apiFunctionTable = OpenApi.Document(Binary.From(Json.FromValue(swaggerRecord)), DefaultOptions)Thanks!
2 Replies
- ImkeFCommunity Champion
Not sure if my understanding is correct, but I fear that this might not be possible, to the static evaluation failing: https://blog.crossjoin.co.uk/2016/08/23/web-contents-m-functions-and-dataset-refresh-errors-in-power-bi/
Would be great if you could crack that as well, though ;)
- AnonymousNot applicable
ImkeF Found a solution after various thoughts!
read the whole json object from swagger and then append the host dynamically, before passing the json contents to the open API. document.
Here's the snippet:
swagger = Json.Document(Extension.Contents("swagger.json")), swaggerRecord = Record.AddField(swagger, "host", biHost), // biHost eg: localhost:80
// OpenApi.Document will return a navigation table apiFunctionTable = OpenApi.Document(Binary.From(Json.FromValue(swaggerRecord)), DefaultOptions)Thanks!