Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

OpenApi document swagger

Hi,

 

dax  ImkeF , I have a question

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!

 

 

  • Anonymous's avatar
    Anonymous
    6 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

  • Anonymous's avatar
    Anonymous
    Not 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!