Thanks Honah for picking it up. The approach looks good to me overall. Left some comments in the PR.
Yufei On Tue, Jan 28, 2025 at 7:22 AM Dmitri Bourlatchkov <di...@apache.org> wrote: > 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 > > > > > > > > > > >