Skip to content

Normalize Goodreads widget profile: emit profile.profileURL (align with other providers) #322

Description

@chrisvogt

Summary

Widget JSON for most providers exposes a public profile URL under payload.profile.profileURL. The Goodreads widget document today only exposes the same concept as payload.profile.link (while other fields like name, username, etc. match the shared profile pattern).

Gatsby Theme Chronogrove now resolves the Goodreads CTA from profile.profileURL first, with profile.link as a legacy fallback (getGoodreadsProfilePageUrl in the theme). To remove drift and keep a single cross-provider contract, Chronogrove should emit profile.profileURL for Goodreads (and optionally retain link as an alias for older clients).

Context

  • Related consumer work: “Use metrics API profile blocks for widget CTAs” (gatsby-theme-chronogrove#606).
  • Verified live GET /widgets/goodreads (e.g. api.chrisvogt.me): profile.link holds the canonical show URL; profile.profileURL is absent today.
  • Other providers on the same API already use profile.profileURL where applicable (Flickr, Instagram, Spotify, Steam, Discogs).

Proposal

  1. When shaping or persisting the goodreads widget document / API payload, set profile.profileURL to the same value currently stored in profile.link (or normalize at read-time in the public widget handler).
  2. Prefer keeping link populated for backward compatibility until any downstream clients no longer rely on it (or document a deprecation timeline).
  3. Optionally add or extend docs/ notes so the widget contract explicitly lists profile.profileURL for every provider that has a canonical profile page.

Acceptance criteria

  • Public goodreads widget JSON includes profile.profileURL with the canonical profile/show URL.
  • Existing profile.link behavior documented (deprecated vs dual-field).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions