Repository navigation
feat(search): geohash grid aggregation option - #62
Merged
Merged
Conversation
dschmidt
force-pushed
the
feat/search
branch
2 times, most recently
from
September 7, 2026 17:58
12d8885 to
8f05719
Compare
dschmidt
force-pushed
the
feat/search-geohash-aggregation
branch
2 times, most recently
from
September 7, 2026 22:02
1e601c8 to
7013fc4
Compare
dschmidt
force-pushed
the
feat/search
branch
3 times, most recently
from
October 1, 2026 15:57
fb2b5d7 to
d6e08e4
Compare
dschmidt
force-pushed
the
feat/search-geohash-aggregation
branch
5 times, most recently
from
October 1, 2026 19:00
a44ce75 to
c5710d1
Compare
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The specified request shape differs from the linked implementation, and some documented constraints are not enforced.
Review effort: Balanced
Findings: 1
What changed in this PR
Extends the search API specification with geohash-grid aggregation support.
Changes:
- Adds geohash precision configuration.
- Documents geohash bucket responses and aggregation constraints.
| File | Description |
|---|---|
api/openapi-spec/v1.0.yaml |
Defines geohash aggregation request and response schemas. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
dschmidt
force-pushed
the
feat/search-geohash-aggregation
branch
from
October 1, 2026 19:18
c5710d1 to
d3f3f30
Compare
@libre.graph.geohashDefinition on aggregationOption, the third aggregation kind next to bucketDefinition and metricDefinition. At most one of the three may be set, the server rejects requests specifying more than one (documented as prose: a not/anyOf construct would leak a dead AggregationOptionNot model into every generated client). Buckets come back as regular searchBuckets with the geohash cell as key, ordered by count descending; size limits them to the top N cells. Geohash buckets carry no aggregationFilterToken. Libregraph extension.
butonic
approved these changes
Oct 1, 2026
dschmidt
marked this pull request as ready for review
October 1, 2026 19:32
dschmidt
requested review from
dragotin,
fschade,
kulmann,
micbar and
rhafer
as code owners
October 1, 2026 19:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds
@libre.graph.geohashDefinitiontoaggregationOption. When set, the aggregation becomes a geohash-grid aggregation over a geo-point field (e.g.location): eachsearchBucketin the response is keyed by a geohash cell and carries its count, ordered by count descending, suitable for density and heatmap rendering.sizelimits the buckets to the top N cells. Geohash buckets carry noaggregationFilterToken; narrowing by location is done through the search query.geohashDefinition.precisionis required and sets the geohash key length (1 to 12, higher means finer cells).bucketDefinition,@libre.graph.metricDefinitionand@libre.graph.geohashDefinitionare mutually exclusive; requests specifying more than one are rejected withinvalidRequest. Expressed as prose rather than anot/oneOfconstruct, which would leak artifacts into the generated clients. This also means geohash aggregations take nosortBy/minimumCount: cell ordering is fixed to count descending.Libregraph extension, not present in MS Graph. Implementation: opencloud-eu/opencloud#3272 (needs updating to the new structure and the rejection semantics).