A prefix is not allowed for the config endpoint, so I don't think you would
have this problem.

On Wed, Apr 1, 2026 at 7:17 PM roryqi <[email protected]> wrote:

> Which catalog configuration should we return if we specified the
> prefix and warehouse at the same time?
>
> Yufei Gu <[email protected]> 于2026年4月2日周四 06:08写道:
> >
> > Yes, let's!
> > Yufei
> >
> >
> > On Wed, Apr 1, 2026 at 3:00 PM Kevin Liu <[email protected]> wrote:
> >>
> >> I've seen a couple of +1s on the spec PR:
> https://github.com/apache/iceberg/pull/15746
> >>
> >> Shall we move this to a vote?
> >>
> >> On Sat, Mar 28, 2026 at 2:21 PM Kevin Liu <[email protected]>
> wrote:
> >>>
> >>> We can use `IcebergErrorResponse` to differentiate between route
> doesnt exists (404) and resource/warehouse doesnt exists (404). This is
> what the spec PR describes,
> https://github.com/apache/iceberg/pull/15746/files#diff-02549ca620d020dc9ead80088cc14e311e12a69651fa8d394cd41a4308debb2eR165-R173
> >>>
> >>> For example,
> >>> `google.com/v1/config` <http://google.com/v1/config> doesnt exist, so
> >>> ```
> >>> python3 -c "import urllib.request; urllib.request.urlopen('
> http://google.com/v1/config')"
> >>> ```
> >>> returns `urllib.error.HTTPError: HTTP Error 404: Not Found`
> >>>
> >>> And I would expect an IRC endpoint to return `NoSuchWarehouseError`
> instead, with `"type": "NoSuchWarehouseException"`.
> >>>
> >>> Best,
> >>> Kevin Liu
> >>>
> >>> On Sat, Mar 28, 2026 at 10:08 AM Steven Wu <[email protected]>
> wrote:
> >>>>
> >>>> Chatted with Yufei offline. The `warehouse/catalog` is a hidden
> concept in the REST spec. If we could redo it, including it in the path
> (instead of as a query parameter) might make more sense. E.g., The endpoint
> could look like "/v1/{prefix}/config," where a 404 status would be perfect.
> >>>>
> >>>> Since it is too late to change that, I agree 404 is fine here.
> >>>>
> >>>> On Fri, Mar 27, 2026 at 10:00 AM Ryan Blue <[email protected]> wrote:
> >>>>>
> >>>>> I think the difference between those examples and the config route
> is that those examples identify resources that do not exist (namespace in
> both cases). We also have cases where you could get a 404 indicating a
> namespace or a table does not exist, but that indicates that the resource
> you're looking for either does not exist (table) or can't exist (namespace
> preventing table from being present).
> >>>>>
> >>>>> The config endpoint always exists, which is why this is odd. I think
> you could argue that this is okay because it isn't really a resource that
> has create/update/delete operations. I just don't know what the "correct"
> way to handle this is in REST APIs. But then I've never been one that's too
> strict about REST principles.
> >>>>>
> >>>>> On Thu, Mar 26, 2026 at 3:44 PM Yufei Gu <[email protected]>
> wrote:
> >>>>>>
> >>>>>> I'd be cautious about 204 since it indicates a successful response.
> 404 seems fine to me. IRC spec uses it in multiple places, like [1] and [2]
> to indicate that certain entities do not exist.
> >>>>>>
> >>>>>> 1.
> https://github.com/apache/iceberg/blob/9534c9b3adc29d127ecc541ce131f49fd72f1980/open-api/rest-catalog-open-api.yaml#L539
> >>>>>> 2.
> https://github.com/apache/iceberg/blob/9534c9b3adc29d127ecc541ce131f49fd72f1980/open-api/rest-catalog-open-api.yaml#L490
> >>>>>>
> >>>>>> Yufei
> >>>>>>
> >>>>>>
> >>>>>> On Thu, Mar 26, 2026 at 2:03 PM Steven Wu <[email protected]>
> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>> 404 may not be the best fit, as it generally indicates that the
> endpoint itself could not be found. The endpoint receiving the query
> parameters exists, and a lack of results is a valid outcome of the
> search/filter operation, not a client error in forming the request URI.
> >>>>>>>
> >>>>>>> Maybe return 204 No Content as the request itself was valid and
> successfully processed.
> >>>>>>>
> >>>>>>>
> >>>>>>> On Thu, Mar 26, 2026 at 1:48 PM Ryan Blue <[email protected]>
> wrote:
> >>>>>>>>
> >>>>>>>> This seems reasonable to me. I don't know if 404 is the right
> response since the endpoint always exists, but it's fine with me.
> >>>>>>>>
> >>>>>>>> On Wed, Mar 25, 2026 at 6:04 PM Yufei Gu <[email protected]>
> wrote:
> >>>>>>>>>
> >>>>>>>>> It seems reasonable to add the 404 response. I noticed that the
> warehouse parameter is optional. I assume this is meant for catalog
> implementations that support exactly one catalog or warehouse here so that
> client is OK to skip it, though please correct me if I am mistaken. In that
> case, a 404 would still make sense when that single warehouse is not yet
> ready.
> >>>>>>>>>
> >>>>>>>>> parameters:
> >>>>>>>>>   - name: warehouse
> >>>>>>>>>     in: query
> >>>>>>>>>     required: false
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Yufei
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Tue, Mar 24, 2026 at 8:33 AM Kevin Liu <[email protected]>
> wrote:
> >>>>>>>>>>
> >>>>>>>>>> Thanks for raising this proposal! I think it makes sense to add
> this to the spec and be explicit about the error case. I found the place
> where Apache Polaris throws `NotFoundException` for the `/v1/config`
> endpoint. The specific error `type` field can be used to disambiguate a
> route 404 (URL doesn't exist) from a resource 404 (URL is valid, but the
> server cannot find the warehouse).
> >>>>>>>>>>
> >>>>>>>>>> Best,
> >>>>>>>>>> Kevin Liu
> >>>>>>>>>>
> >>>>>>>>>> [1]
> https://github.com/apache/polaris/blob/67daa9bb479eaa0ee6c4428984e253afc01b6efd/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java#L1360
> >>>>>>>>>>
> >>>>>>>>>> On Tue, Mar 24, 2026 at 4:34 AM Oğuzhan Ünlü <
> [email protected]> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> Hi everyone,
> >>>>>>>>>>>
> >>>>>>>>>>> I'd like to propose a small addition to the REST catalog spec:
> documenting HTTP 404 as a valid response for the /v1/config endpoint when a
> requested warehouse does not exist.
> >>>>>>>>>>>
> >>>>>>>>>>> The Rationale
> >>>>>>>>>>>
> >>>>>>>>>>> The /v1/config endpoint allows an optional query parameter for
> a warehouse identifier, e.g. /v1/config?warehouse=mywarehouse.  But the
> openapi spec does not specify what should happen if the requested warehouse
> does not exist.
> >>>>>>>>>>>
> >>>>>>>>>>> Snowflake Open Catalog already returns a 404 for non-existent
> warehouses:
> >>>>>>>>>>>
> >>>>>>>>>>> ```
> >>>>>>>>>>> {
> >>>>>>>>>>>   "error": {
> >>>>>>>>>>>     "message": "Unable to find warehouse
> NONEXISTENT_WAREHOUSE_12345",
> >>>>>>>>>>>     "type": "NotFoundException",
> >>>>>>>>>>>     "code": 404
> >>>>>>>>>>>   }
> >>>>>>>>>>> }
> >>>>>>>>>>> ```
> >>>>>>>>>>>
> >>>>>>>>>>> This proposal therefore formalizes what Snowflake Open Catalog
> is already doing in production. It seems sensible to formalize the 404
> response code, because this is consistent with other Iceberg REST endpoints
> which allow a 404 response code for missing resources (tables, namespaces,
> views).
> >>>>>>>>>>>
> >>>>>>>>>>> The Proposed Solution (PR-15746)
> >>>>>>>>>>>
> >>>>>>>>>>> Add a NoSuchWarehouseResponse to the OpenAPI spec for the
> /v1/config endpoint, formalizing 404 as the response when a warehouse does
> not exist. You can view the PR here:
> https://github.com/apache/iceberg/pull/15746 .
> >>>>>>>>>>>
> >>>>>>>>>>> Looking forward to your thoughts.
> >>>>>>>>>>>
> >>>>>>>>>>> Best,
> >>>>>>>>>>> Oguzhan
>

Reply via email to