feat(gbp): capture owner-set Business Profile attributes (any category)#731
Merged
Conversation
Adds a generic owner-attributes capture pipeline alongside the hotels-only
lodging surface. Every gbp-sync now calls the Business Information API's
getAttributes for each selected location and snapshots the result on change.
Unlike the Lodging API, getAttributes works for any business category and
returns ONLY the attributes the owner has set (amenities, service options,
accessibility, identity tags, social URLs), so attributeCount is a reliable
owner-readable completeness signal.
- integration: attributes-client (getAttributes/countAttributes/hashAttributes),
built + tested from real captured API responses; flattens BOOL/ENUM/URL/
REPEATED_ENUM carriers into {values, uris}
- db: gbp_attributes_snapshots table + migration v82
- gbp-sync: fetch + snapshot-on-change (mirrors lodging)
- read surface: GET /gbp/attributes, cnry gbp attributes, MCP
canonry_gbp_attributes, contracts DTO; regenerated SDK
- docs: data-model, integration + root AGENTS.md, GBP skill reference
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bdfc5bd to
f29536a
Compare
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.
What
A generic owner-attributes capture pipeline, alongside the existing hotels-only lodging surface. Every
gbp syncnow calls the Business Information API'sgetAttributesfor each selected location and snapshots the result on change.Why
The Lodging API only covers hotels and is commonly empty even for complete ones (the "Hotel details" panel is a separate surface).
getAttributesworks for any business category and returns only the attributes the owner has set, soattributeCountis a reliable owner-readable completeness signal, not a verify-nudge. Live recon confirmed real data: a roofing contractor exposeshas_onsite_services/offers_online_estimates/is_owned_by_women/ social URLs; a hotel exposeswelcomes_lgbtq/url_instagram.Changes
attributes-client(getAttributes/countAttributes/hashAttributes), built + tested from real captured API responses; flattens the BOOL/ENUM/URL/REPEATED_ENUM value carriers into{values, uris}; returns[]on 404; no readMask, no paginationgbp_attributes_snapshotstable + migration v82 (snapshot-on-change, mirrorsgbp_lodging_snapshots)syncedAt)GET /projects/:name/gbp/attributes,cnry gbp attributes, MCPcanonry_gbp_attributes, contracts DTO; regenerated@ainyc/canonry-api-clientTests
[]on no-attributes / 404, rethrows non-404, asserts the host+pathMinor bump to 4.93.0.
🤖 Generated with Claude Code