Skip to content

[Proposal] Unified Search & Item Listing for Sub-Trees #7

@jonhealy1

Description

@jonhealy1

I'd like to propose expanding the scope of the Children extension to support Item Interaction and Recursive Search on nodes.

The Problem: The "Leaf Node" Disconnect

Currently, the Children extension focuses on traversing the Containers (Catalogs/Collections).

  • Workflow: User browses Root -> Sub-Catalog -> Collection.
  • The Break: Once the user reaches a Collection (or a Catalog containing Items), the children paradigm stops. To see or search the data, the client must switch logic to the STAC API - Features endpoints (/items or /search).

The Missing Capability: "Search This Branch"

If a Catalog contains 100 sub-collections (e.g., a "Project" catalog), there is currently no standard way to "Search all items within this Project".

  • Current Workaround: The client must crawl /children, collect 100 Collection IDs, and send a massive POST /search query with collections: [id1, id2, ... id100]. This is inefficient and chatty.

Proposal: Child-Scoped Item Endpoints

We should define standard endpoints relative to any node (Catalog or Collection) that allow interacting with the Items contained within that branch of the tree.

1. Recursive Item Listing
GET .../{node}/children/items

  • Behavior: Returns an ItemCollection of items contained in this node (and optionally its descendants).
  • Use Case: "Show me a preview of data in this folder."

2. Recursive/Scoped Search
POST .../{node}/children/search

  • Behavior: Performs a standard STAC Search, but implicitly scoped to the collections/items within the current node's hierarchy.
  • Use Case: "Find all images with cloud_cover < 10 inside the 'Forestry' catalog."

Why this is necessary

This transforms the extension from a simple "Link Lister" into a powerful Hierarchical Search Interface. It allows clients to treat any node in the tree as a "Virtual Root" for searching, without needing to know the complex graph structure underneath.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions