Visitar URL original
feat(catalog): Add Data Registry GET /v1/{project}/search and align with openapi spec 0.8.2 by aniketpalu · Pull Request #219 · opendatahub-io/feast · GitHub
Skip to content

feat(catalog): Add Data Registry GET /v1/{project}/search and align with openapi spec 0.8.2 - #219

Merged
ntkathole merged 8 commits into
opendatahub-io:masterfrom
aniketpalu:feat/rhai-377-search-api
Oct 7, 2026
Merged

ntkathole merged 8 commits into
opendatahub-io:masterfrom
aniketpalu:feat/rhai-377-search-api

Conversation

@aniketpalu

@aniketpalu aniketpalu commented Sep 24, 2026 •

Copy link
Copy Markdown

What this PR does / why we need it:

Summary

Adds Data Registry GET /v1/{project}/search (RHAI-377) and aligns catalog table/volume JSON with OpenAPI 0.8.1.

Path {project} is the RHOAI / Kubernetes namespace (SavedDataset.namespace). Search runs inside Feast project data-registry for that tenant only. This is a new catalog route. It does not call Feast feature-registry GET /search (different path, corpus, and JSON). OpenAPI yaml lives in the separate data-registry-production MR.

Implements RHAI-377 under RHAI-372.

Search (GET /v1/{project}/search)

  • Scoring (integers): exact name 100, name substring 90, description 80, property/schema/URI value 60, fuzzy name 40. Empty query returns in-scope rows at score 0.
  • Filters: namespace / namespaces (collection), asset_type only, properties=key:value (AND), label= (case-insensitive substring). Unknown asset_type → 200 with empty results.
  • Pagination: Feast paginate_and_sort nested object (totalCount / totalPages / omit-when-false hasNext / hasPrevious). page_size wins over limit; max 500. Out-of-range page → Iceberg 400.
  • Hits: unscoped name, collection as namespace: [collection], slim properties. No format / owner / labels on the hit.
  • Config: GET /v1/config advertises GET /v1/{prefix}/search when DATACATALOG_ENABLED.

Catalog alignment (OpenAPI 0.8.1)

  • Removed catalog GET /v1/projects (404). Feast feature-registry GET /projects is unchanged.
  • Shared AssetResponse: volumes PATCH (PUT gone); storage_location; format enums (StructuredFormat / UnstructuredFormat).
  • Owner is server-assigned from X-User or kubeflow-userid at create, immutable, not in the request body. Missing identity on create → 400. Missing owner or format on GET → 400 (no registered_by fallback, no volume_type=EXTERNAL → other).
  • Request schema is schema_fields; response schema is columns. Not both on the same JSON object.
  • registered_by / updated_by are not API fields.

Reviewer map

Area Files
Search sdk/python/feast/api/data_catalog/search.py
Catalog models / owner / format models.py, catalog_assets.py, generic_tables.py, volumes.py
Mount + config data_catalog_integration.py, config.py
Tests test_catalog_search.py, volumes/tables/labels/config/server tests

Which issue(s) this PR fixes:

RHAI-377 (parent RHAI-372)

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests
  • Integration tests
  • Manual tests
  • Testing is not required for this change

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Central YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6c175614-64af-4250-8202-a3aa810b561f

Comment @coderabbitai help to get the list of available commands.

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@aniketpalu aniketpalu changed the title feat(catalog): Add Data Registry GET /v1/{project}/search feat(catalog): Add Data Registry GET /v1/{project}/search and align with openapi spen 0.8.1 Sep 24, 2026
@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@Fiona-Waters Fiona-Waters left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @aniketpalu left a couple of comments

Comment thread sdk/python/feast/api/data_catalog/generic_tables.py Outdated
Comment thread sdk/python/feast/api/data_catalog/search.py
@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@aniketpalu aniketpalu changed the title feat(catalog): Add Data Registry GET /v1/{project}/search and align with openapi spen 0.8.1 feat(catalog): Add Data Registry GET /v1/{project}/search and align with openapi spec 0.8.2 Sep 30, 2026
@openshift-merge-bot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD 2e4e987 and 2 for PR HEAD 8b781cf in total

@openshift-merge-bot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD c7ed9e7 and 1 for PR HEAD 8b781cf in total

@openshift-merge-bot

Copy link
Copy Markdown

/retest-required

Remaining retests: 0 against base HEAD 1fc791b and 0 for PR HEAD 8b781cf in total

@openshift-merge-bot

Copy link
Copy Markdown

/hold

Revision 8b781cf was retested 3 times: holding

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-dzsbx

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-x82c6

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-5fw4z

@Srihari1192

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-crvz2

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@openshift-ci

openshift-ci Bot commented Oct 7, 2026

Copy link
Copy Markdown

@aniketpalu: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-in-cluster-presubmit c7d44c6 link true /test e2e-in-cluster-presubmit

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-djzbg

@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

1 similar comment
@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-fdt47

Catalog search with OpenAPI score tiers, filters, Feast pagination, config advertisement, and unit tests including property-filter validation.

Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Share AssetResponse, require identity owner, switch volumes to PATCH,
drop GET /v1/projects, and use StructuredFormat/UnstructuredFormat plus
storage_location. Search route is unchanged.

Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
…t list

Do not invent format=other from volume_type or owner from registered_by.
Remove leftover list_catalog_projects after GET /v1/projects was deleted.

Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
- Add remove_properties field on PATCH volume/generic-table (RHAI-637)
- Add LicenseType, MaturityType, PiiStatus enums on create/update
- Fix merge_public_properties to true merge (omitted keys remain)
- Governance fields support null-clear via model_fields_set
- Governance keys in remove_properties → 400
- Overlap properties ∩ remove_properties → 400
- 17 new tests (238 total pass)

Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
@ntkathole
ntkathole force-pushed the feat/rhai-377-search-api branch from c7d44c6 to dd2d6f5 Compare October 7, 2026 12:43
@ntkathole
ntkathole merged commit 829dfbb into opendatahub-io:master Oct 7, 2026
28 of 30 checks passed
@rhods-ci-bot

Copy link
Copy Markdown

/group-test

@rhods-ci-bot

Copy link
Copy Markdown

/early-gate-build

@rhods-ci-bot

Copy link
Copy Markdown

@aniketpalu: The following test has Failed:

OCI Artifact Browser URL

View in Artifact Browser

Inspecting Test Artifacts Manually

To inspect your test artifacts manually, follow these steps:

  1. Install ORAS (see the ORAS installation guide).
  2. Download artifacts with the following commands:
mkdir -p oras-artifacts
cd oras-artifacts
oras pull quay.io/opendatahub/odh-ci-artifacts:feast-group-test-z9n5z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants