Using multiple YAML files per API / API area sounds good to me.

We should definitely use the Iceberg REST API YAML without any
modifications to avoid accidental mistakes.

Cheers,
Dmitri.

On Tue, Jan 28, 2025 at 2:28 AM Honah J. <hon...@apache.org> wrote:

> Hi everyone,
>
> Thanks for the proposal and all the great discussion! I also agree that we
> should separate Polaris-only APIs from the IRC spec to keep the IRC spec
> consistent with the upstream version. I’d like to propose another way to
> achieve this, as some APIs may not need a separate prefix but are still
> better kept in separate YAML files.
>
> This is particularly useful for cases where new APIs logically belong under
> `/catalog` (e.g., the notification API) but should remain separate from the
> IRC YAML file for practical reasons. Similar cases will likely arise in the
> future.
>
> To address this, we can split the OpenAPI spec into multiple YAML files
> while keeping them grouped under the same prefix. This allows
> Polaris-specific APIs to stay separate while ensuring the Iceberg spec
> remains untouched. I tested this approach using policy management APIs in
> PR
> #856 <https://github.com/apache/polaris/pull/856>[1], based on this blog
> post
> <
> https://techdocs.studio/blog/how-to-split-open-api-spec-into-multiple-files
> >
> [2].
>
> With this approach, when a Polaris catalog-level API is later contributed
> to Iceberg, we don’t need to re-route anything. We simply pull the latest
> version from IRC (assuming it is merged) and remove it from the Polaris
> YAML file. The API definitions remain the same—only their location changes.
> The downside of this approach is that it introduces additional references
> across multiple YAML files.
>
> Would love to hear your thoughts on this!
>
> Best regards,
> Honah
>
> [1] https://github.com/apache/polaris/pull/856
> [2]
> https://techdocs.studio/blog/how-to-split-open-api-spec-into-multiple-files
>
>
> On Thu, Jan 23, 2025 at 2:22 AM Jean-Baptiste Onofré <j...@nanthrax.net>
> wrote:
>
> > Hi Jack,
> >
> > Welcome back!
> >
> > I like your idea to separate Iceberg REST Apis and Polaris REST Apis.
> > It's cleaner and it will certainly simplify the maintenance/update
> > (especially for the Iceberg REST APIs).
> >
> > About the Polaris REST APIs, that's the idea: we start first in
> > Polaris but there is good chance to be proposed to Iceberg REST Spec.
> > As the "pace" between implementation and spec is different, the
> > purpose here is to start with an implementation and propose a generic
> > spec later.
> >
> > I think we should also cleanly state the "scope" of the APIs related
> > to prefix. Imho, we are gathering too much APIs in /catalog and
> > /management: I think we should consider more fine-grained prefix
> > and/or inner prefix, else we may have to create a bunch of routes from
> > one prefix to another (when an API move from Polaris to Iceberg etc).
> >
> > Regards
> > JB
> >
> > On Wed, Jan 22, 2025 at 10:39 PM Yufei Gu <flyrain...@gmail.com> wrote:
> > >
> > > Thanks, Jack, for bringing this up! I think separating the Iceberg REST
> > > APIs from the other Polaris REST APIs is an excellent idea. Not only
> does
> > > it simplify any potential future rebases of the Iceberg REST spec, but
> it
> > > also provides developers with a clearer distinction between the
> different
> > > sets of REST APIs.
> > >
> > > To implement this, we may need to experiment with the auto-generation
> > > tools. Feel free to file issues, or propose ideas.
> > >
> > > Yufei
> > >
> > >
> > > On Wed, Jan 22, 2025 at 1:30 PM Jack Ye <yezhao...@gmail.com> wrote:
> > >
> > > > Hi everyone,
> > > >
> > > > I am starting to work on Polaris related tasks, and realize that
> > currently
> > > > the state of the spec folder [1] in the project is a bit
> disorganized:
> > > >
> > > > The Iceberg REST catalog (IRC) spec [2] contains non-standard APIs
> > like the
> > > > /notifications API, but misses a few APIs like the scan planning
> ones.
> > > >
> > > > There is the Polaris management service API spec [3] that seems to
> > record
> > > > the identity management APIs in Polaris and will never be a part of
> > the IRC
> > > > spec. But I see new proposals like policy [4] and volume [5] that
> will
> > > > likely introduce new APIs, and I am not sure where those APIs would
> go,
> > > > will they be in separate OpenAPI YAML files, or a part of the
> > management
> > > > service APIs, or do we expect them to be eventually a part of the
> > official
> > > > IRC spec?
> > > >
> > > > I propose that we should agree upon a consistent framework to deal
> with
> > > > these APIs, to allow users to more clearly understand different types
> > of
> > > > APIs in Polaris, and allow developers to more easily and more
> > consistently
> > > > add new ones or update existing ones. The framework I have in mind is
> > as
> > > > the following:
> > > >
> > > > 1. there will be in general 2 types of APIs: IRC APIs and Polaris
> > APIs. The
> > > > IRC APIs are precisely following the IRC spec, whereas the Polaris
> > APIs are
> > > > only available in a Polaris server. It is possible for some Polaris
> > APIs to
> > > > be developed first to unblock support of certain use cases, and later
> > > > contributed back to the IRC spec, depending on the appetite of both
> > > > communities. If that happens, the Polaris API will be deprecated in
> > favor
> > > > of the official IRC API when it gets accepted in Iceberg.
> > > >
> > > > 2. For Polaris APIs, it is subdivided into different groups by
> > > > functionality, and these groups are physically separated into
> different
> > > > YAML files. Currently there are 2 groups:
> > > > - Polaris management service
> > > > - Polaris notification service
> > > >
> > > > And there can be new groups in the future for policy or volume if
> those
> > > > proposals get accepted in Polaris.
> > > >
> > > > What do we think?
> > > >
> > > > Best,
> > > > Jack Ye
> > > >
> > > > [1] https://github.com/apache/polaris/tree/main/spec
> > > > [2]
> > > >
> >
> https://github.com/apache/polaris/blob/main/spec/rest-catalog-open-api.yaml
> > > > [3]
> > > >
> > > >
> >
> https://github.com/apache/polaris/blob/main/spec/polaris-management-service.yml
> > > > [4]
> > > >
> > > >
> >
> https://docs.google.com/document/d/1kIiVkFFg9tPa5SH70b9WwzbmclrzH3qWHKfCKXw5lbs/edit?tab=t.0#heading=h.nly223xz13km
> > > > [5]
> > > >
> > > >
> >
> https://docs.google.com/document/d/1ofljkrtiXRWc-v6hfkg_laKlYltepTPX7zsg44Tb-BY/edit?tab=t.0#heading=h.7ic5c343eju1
> > > >
> >
>

Reply via email to