hashicorp / terraform-plugin-codegen-openapi

OpenAPI to Terraform Provider Code Generation Specification
Mozilla Public License 2.0
48 stars 6 forks source link

"no compatible schema found" error. Can the tool evaluate schema $refs under the top of the path? #157

Open 99-lives opened 2 months ago

99-lives commented 2 months ago

tfplugingen-openapi CLI version

v0.3.0

OpenAPI Spec File

'/users/{user-id}':
  get:
    responses:
      2XX:
        description: Retrieved entity
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/(reference path)'

Generator Config

provider:
  name: (name)
data_sources:
  users:
    read:
      path: /users/{user-id}
      method: GET

Expected Behavior

Evaluate the reference schema and generate the provider code spec.

Actual Behavior

Failed with error:

time=(redacted) level=WARN msg="skipping data source schema mapping" data_source=users err="no compatible schema found"

Additional Information

Hi team,

The OpenAPI spec for the system I am trying to create a provider for has a reference to the response object schema at the top of the schema block. Does the tool support this? I saw on the DESIGN.md that it does support expanding a $ref tag, but it was inside of a nested schema.

Or perhaps I'm doing something wrong here?

Cheers, Harry

Code of Conduct

bflad commented 2 months ago

Hi @99-lives 👋 Thank you for raising this and sorry you ran into trouble here. This tool's design should be expanding/following references such as those automatically. Is the OpenAPI specification publicly available or can you share it? Otherwise could you provide the actual parts of the specification (changing names, etc. if necessary) so we can reproduce the issue you are seeing with a fully valid specification? Thanks so much.

99-lives commented 2 months ago

Sure @bflad, I'm working on a provider for the Microsoft Graph API, as a side project to help me with my job in IT. The OpenAPI spec for it is available here: https://github.com/microsoftgraph/msgraph-metadata/blob/master/openapi/v1.0/openapi.yaml

Beware, it's a 27mb text file!