Skip to content

Incomplete OpenApiResponse #1315

Closed

Description

Describe the bug
OpenApiResponse object doesn't include the schema that is included in the swagger file.

    "responses": {
      "200": {
        "description": "OK",
        "schema": {
          "format": "binary",
          "description": "The content of the file.",
          "type": "string",
          "x-ms-summary": "File Content"
        }
      },
      "default": {
        "description": "Operation Failed."
      }
    }, ...

To Reproduce

string swaggerFile = @"https://raw.githubusercontent.com/microsoft/Power-Fx/main/src/tests/Microsoft.PowerFx.Connectors.Tests/Swagger/AzureBlobStorage.json";
using HttpClient client = new HttpClient();
HttpResponseMessage webResponse = await client.GetAsync(swaggerFile).ConfigureAwait(false);
string swagger = await webResponse.Content.ReadAsStringAsync().ConfigureAwait(false);	
OpenApiDocument doc = new OpenApiStringReader().Read(swagger, out OpenApiDiagnostic diag);
OpenApiOperation op = doc.Paths["/{connectionId}/datasets/default/GetFileContentByPath"].Operations[OperationType.Get];
OpenApiResponse response = op.Responses["200"];	

Look at the response object and compare it with the swagger file
All fields/props are either null or empty.

Expected behavior
Have a way to access the schema, via Content or any other means.

Screenshots/Code Snippets
See code snippet

Additional context
It's likely related to "Produces" item which is not defined, neither locally, nor globally.
Per Swagger/OpenAPI spec, in Response object, schema SHOULD be accompanied by a relevant produces mime-type.
... but it's not mandatory.

Activity

  1. darrelmiller commented on Aug 17, 2023

    @darrelmiller
    Member

    We had an issue in a previous version where produces was required to properly read the schema. That should be fixed in the latest version of the library. What version are you using?

  2. LucGenetier commented on Aug 17, 2023

    @LucGenetier
    ContributorAuthor

    Latest, 1.6.6.

  3. darrelmiller commented on Aug 17, 2023

    @darrelmiller
    Member

    I was able to repro with this snippet

    {
      "swagger": "2.0",
      "info": {
        "version": "1.0",
        "title": "Azure Blob Storage",
         },
      "host": "localhost:23340",
      "basePath": "/apim/azureblob",
      "schemes": [
        "https"
      ],
      "paths": {
        "/{connectionId}/datasets/default/GetFileContentByPath": {
          "get": {
            "tags": [
              "AzureBlobSingletonFileTransferFileData"
            ],
            "summary": "Get blob content using path",
            "description": "This operation retrieves blob contents using path.",
            "operationId": "GetFileContentByPath",
            "responses": {
              "200": {
                "description": "OK",
                "schema": {
                  "format": "binary",
                  "description": "The content of the file.",
                  "type": "string",
                  "x-ms-summary": "File Content"
                }
              },
              "default": {
                "description": "Operation Failed."
              }
            },
            "deprecated": true,
            "x-ms-api-annotation": {
              "status": "Production",
              "family": "GetFileContentByPath",
              "revision": 1
            }
          }
        }
      }
    }

    The workaround is to add the following into the operation:

            "produces": ["application/octet-stream"],

    I thought this had been fixed by #842 but apparently not. Maggie Kimani (@MaggieKimani1) could you take a look at this and consider it for a 1.6.7 patch release.

  4. MaggieKimani1 commented on Aug 17, 2023

    @MaggieKimani1
    Contributor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

type:bugA broken experience

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions