Skip to content
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

Missing functions to remove elements ? #153

Open
Herrick19 opened this issue Feb 22, 2022 · 1 comment · May be fixed by #194
Open

Missing functions to remove elements ? #153

Herrick19 opened this issue Feb 22, 2022 · 1 comment · May be fixed by #194
Labels
enhancement New feature or request
Milestone

Comments

@Herrick19
Copy link

Herrick19 commented Feb 22, 2022

Hi,

I've been working on a project that would allow to take a full OAS Definition file and create a stripped down version using only a subset of the original endpoints, tags, webhooks, etc.

I want to remove internal functions based on a "x-internal" attributes.

I also want to create different versions of an api definition based on a "x-presentations" attributes.

So Far, I was able to remove uneeded:

  • "paths" using paths->removePath('/path')
  • "operations" using unset(pathItem->post)

But now I am struggling to find a way to remove other types of elements.
For example:

  • Trying to remove a schema using
    unset($openapi->components->schemas['foo']);
    Give an error: "PHP Notice: Indirect modification of overloaded property cebe\openapi\spec\Components::$schemas has no effect"
  • Trying to delete an element from x-Webhooks gives the same kind of error
  • Tags doesn't seem to be possible at all since Tag Item are added to an unindexed array...

I am considering forking the project and starting to work on fixes for that but before I do I'd like to know:
1- If I'm doing something wrong and it's already possible to remove object. If so, I would appreciate a pointer.
2- If it's not possible, would you consider to improve the library to include the new functionality ? Or are you considering this as irrelevant to the project ? I'd be willing to help if you do.

If we can find a way to remove elements, I would also implement a function to remove unused elements automatically using a recursive referencing counter algorithm detecting unused elements.

Thanks in advance

@cebe
Copy link
Owner

cebe commented Feb 24, 2022

Good point, changing the OpenAPI definitions was implemented only afterwards, the library was initally implemented for reading schema only. Functions for deleting should definitively be added.

@cebe cebe added the enhancement New feature or request label Feb 24, 2022
@cebe cebe added this to the 2.0 milestone Apr 20, 2022
@Aribros Aribros linked a pull request Sep 8, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants