Skip to content

Referenced Parameters compiling to Object instead of Array #155

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
bplainia opened this issue Mar 1, 2022 · 5 comments · Fixed by #195 or #234
Closed

Referenced Parameters compiling to Object instead of Array #155

bplainia opened this issue Mar 1, 2022 · 5 comments · Fixed by #195 or #234
Labels
bug Something isn't working needs investigation Work is needed to figure out the root cause of the problem.
Milestone

Comments

@bplainia
Copy link

bplainia commented Mar 1, 2022

I am having an issue with parameters being compiled as an object instead of an array. This is invalid OpenAPI.
I am using references heavily.
I have many different yaml files that are referenced by the primary spec so it is easy to maintain.
Each endpoint has parameters, which usually point to another file since they are used everywhere.
When a parameter reference points to something within the same file, the compiled parameter

Example Code (one of the referenced files) that does not work. It compiles to an object that has numbered keys.

'/v1/user':
  get:
    parameters:
      - $ref: 'parameters.yaml#/components/parameters/ApiVersion'
      - $ref: 'parameters.yaml#/components/parameters/Page'

Example Code (one of the referenced files) that does work. It compiles to an array.

'/v1/user':
  get:
    parameters:
      - $ref: 'parameters.yaml#/components/parameters/ApiVersion'
      - $ref: 'parameters.yaml#/components/parameters/Page'
      - $ref: '#/components/parameters/User'
@cebe
Copy link
Owner

cebe commented Mar 11, 2022

which part of the example code gets parsed as object instead of array?
Could you provide a complete test set of files that reproduce the issue?

@cebe cebe added the needs more info More information is needed to reproduce the issue. label Mar 11, 2022
@bplainia
Copy link
Author

@cebe
Please see https://github.com/bplainia/php-openapi-test and follow the instructions to build the compiled spec.

@cebe cebe added needs investigation Work is needed to figure out the root cause of the problem. bug Something isn't working and removed needs more info More information is needed to reproduce the issue. labels Apr 20, 2022
@Aribros
Copy link
Contributor

Aribros commented Sep 14, 2023

@cebe Please see https://github.com/bplainia/php-openapi-test and follow the instructions to build the compiled spec.

I have investigated this but could not reproduce this. I also added a test to confirm all you have said but all passed.

@bplainia
Copy link
Author

bplainia commented Oct 6, 2023

It's been a while since I looked at this. I'm on a different project now and using swagger-php.
I updated my repo with the compiled yaml file. It still is doing it, though now both instances are generating objects. This is with a fresh clone and I ran composer api:build

@SOHELAHMED7
Copy link
Contributor

I can confirm that this issue exists and I found its steps to reproduce. This issue does not exist while just reading the spec so the test at https://github.com/cebe/php-openapi/pull/195/files#diff-9a382adb08bd4ed5cb895893615a9e35da556f181b7a549f8e48e191702356a9 will pass and it is completely OK.

While running

$ ./bin/php-openapi inline tests/spec/data/path-params/openapi.yaml compiled.yml

the generated output file contains

    parameters:
      '1':
        name: organizationId
        in: path
        description: 'The Organization ID'
        required: true
        schema:
          type: string
          format: uuid
      '0':
        name: api-version
        in: header
        description: 'The API version'
        required: false
        schema:
          type: string
          format: date
          example: '2021-05-18'

instead of

    parameters:
      - name: organizationId
        in: path
        description: 'The Organization ID'
        required: true
        schema:
          type: string
          format: uuid
      - name: api-version
        in: header
        description: 'The API version'
        required: false
        schema:
          type: string
          format: date
          example: '2021-05-18'

So fix should be made in $ ./bin/php-openapi inline ... (output file generation while converting)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs investigation Work is needed to figure out the root cause of the problem.
Projects
None yet
4 participants