Hi Yufei,

Advertising non-IRC Polaris capabilities via the IRC config endpoint
creates API and specification confusion.

The fact that clients can ignore extra endpoints in the IRC config, does
not mean that Polaris should add those endpoints there.

> I think a Polaris client is also an IRC client, [...]

I do not think this assumption is valid in all cases. Someone making a
Generic Tables client does not have to support IRC APIs. An OSI client [1]
does not have to support IRC APIs.

If there are use cases for Generic Table clients to be able to discover the
set of supported Generic Tables API endpoints, that discovery should be
done via the Generic Tables API endpoints, I think.

[1] https://github.com/apache/polaris/pull/4816#discussion_r3438945230

Cheers,
Dmitri.

On Mon, Jun 22, 2026 at 1:55 PM Yufei Gu <[email protected]> wrote:

> I think a Polaris client is also an IRC client, just with additional
> capabilities. In that sense, Polaris can be viewed as a superset of IRC. If
> the config endpoint is intended for capability discovery, returning Polaris
> specific endpoints seems reasonable. Standard IRC clients can simply ignore
> endpoints they don't recognize.
>
> A concrete example is the Polaris Spark client, which checks server
> capabilities before using Polaris specific functionality:
>
> public List<TableIdentifier> listGenericTables(Namespace ns) {
>   Endpoint.check(endpoints, PolarisEndpoints.V1_LIST_GENERIC_TABLES);
>
>
> Yufei
>
>
> On Fri, Jun 19, 2026 at 7:43 AM Dmitri Bourlatchkov <[email protected]>
> wrote:
>
> > Hi All,
> >
> > During my review of [4816] I realized [1] that Polaris returns some
> non-IRC
> > endpoints in the IRC config responses.
> >
> > For example:
> >
> > GET 'http://localhost:8181/api/catalog/v1/config?warehouse=polaris'
> >
> > Result:
> > [...]
> >   "endpoints": [
> >     "GET /v1/{prefix}/namespaces",
> >     "GET /v1/{prefix}/namespaces/{namespace}",
> >     "HEAD /v1/{prefix}/namespaces/{namespace}",
> > [...]
> >    "DELETE
> >
> polaris/v1/{prefix}/namespaces/{namespace}/generic-tables/{generic-table}",
> >     "GET
> >
> polaris/v1/{prefix}/namespaces/{namespace}/generic-tables/{generic-table}",
> >     "GET /polaris/v1/{prefix}/namespaces/{namespace}/policies",
> >     "POST /polaris/v1/{prefix}/namespaces/{namespace}/policies",
> >
> > The latter group of endpoints is not related to the Iceberg REST Catalog
> > API.
> >
> > I wonder what the rationale might be for returning them in the IRC config
> > response.
> >
> > From my POV, returning them in the IRC config response is incorrect
> because
> > these endpoints form APIs that follow a different specification and
> clients
> > using the IRC API do not need that information to properly use the IRC
> API.
> >
> > WDYT?
> >
> > [1] https://github.com/apache/polaris/pull/4816#discussion_r3438945230
> >
> > [4816] https://github.com/apache/polaris/pull/4816
> >
> > Thanks,
> > Dmitri.
> >
>

Reply via email to