me.linkna.linkinbio
Schema Diff
+1012 -4
Compatibility Analysis
Breaking Changes Detected
21 breaking changes, 372 non-breaking changes.
Breaking Changes (21)
- RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#widgetGoodreads") }
- RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGithub") }
- RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetTealfm") }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon.type", sort: "const", value: "patreon" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.alt", sort: "maxLength", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetMedium.type", sort: "const", value: "medium" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type", sort: "const", value: "beehiiv" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.text", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord.type", sort: "const", value: "discord" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.title", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch.type", sort: "const", value: "twitch" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack.type", sort: "const", value: "substack" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetClock.label", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetMap.type", sort: "const", value: "map" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.type", sort: "const", value: "video" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetReddit.type", sort: "const", value: "reddit" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetClock.type", sort: "const", value: "clock" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm.type", sort: "const", value: "lastfm" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.type", sort: "const", value: "header" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.alignment", sort: "enum", value: "left,center,right" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube.type", sort: "const", value: "youtube" }
Non-Breaking Changes (372)
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#connectedServices.lastfmUsername" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.alignment" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.text" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.claps" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.publishedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.readingTime" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.subtitle" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.title" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.url" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.numComments" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.score" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.subreddit" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.title" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.url" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImage" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImageCredit" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorSparkles" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorStyle" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.height" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.width" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.description" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.imageUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.label" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.mode" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.targetDate" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.timezone" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.bannerUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.description" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.iconUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.inviteUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.memberCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.presenceCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.coverArtNotice" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastfmUsername" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays:items" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.latitude" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.locationName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.longitude" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.mapImageRef" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.style" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.zoom" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles:items" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.bio" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.displayName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.followerCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.profileUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.username" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creationName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creatorName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.imageUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.patronCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.postCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.avatarUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.commentKarma" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.karma" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.linkKarma" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.profileUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts:items" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.username" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.authorName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.coverImageUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.description" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.imageUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.postCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.subscriberCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTealfm.source" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.displayName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.isLive" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.profileImageUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamGame" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamTitle" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.username" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.viewerCount" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.alt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.aspectRatio" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.createdAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.did" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.loop" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.muted" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.showOverlay" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.title" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.videoBlobRef" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelName" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelUrl" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.enabled" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.id" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.latestVideo" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.size" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.type" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.isShort" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.publishedAt" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.title" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.videoId" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant10" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant11" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant12" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant13" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant14" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant15" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant16" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant4" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant5" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant6" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant7" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant8" }
- AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant9" }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#connectedServices", tgt: "me.linkna.linkinbio#connectedServices.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.alignment", kind: "prop", name: Some("alignment") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.text", kind: "prop", name: Some("text") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.claps", kind: "prop", name: Some("claps") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.publishedAt", kind: "prop", name: Some("publishedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.readingTime", kind: "prop", name: Some("readingTime") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.subtitle", kind: "prop", name: Some("subtitle") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.url", kind: "prop", name: Some("url") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.numComments", kind: "prop", name: Some("numComments") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.score", kind: "prop", name: Some("score") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.subreddit", kind: "prop", name: Some("subreddit") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.url", kind: "prop", name: Some("url") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImage", kind: "prop", name: Some("backgroundImage") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImageCredit", kind: "prop", name: Some("backgroundImageCredit") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorSparkles", kind: "prop", name: Some("cursorSparkles") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorStyle", kind: "prop", name: Some("cursorStyle") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.height", kind: "prop", name: Some("height") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.width", kind: "prop", name: Some("width") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.imageUrl", kind: "prop", name: Some("imageUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationId", kind: "prop", name: Some("publicationId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationName", kind: "prop", name: Some("publicationName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl", kind: "prop", name: Some("publicationUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.label", kind: "prop", name: Some("label") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.mode", kind: "prop", name: Some("mode") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.targetDate", kind: "prop", name: Some("targetDate") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.timezone", kind: "prop", name: Some("timezone") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.bannerUrl", kind: "prop", name: Some("bannerUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.iconUrl", kind: "prop", name: Some("iconUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.inviteUrl", kind: "prop", name: Some("inviteUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.memberCount", kind: "prop", name: Some("memberCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.presenceCount", kind: "prop", name: Some("presenceCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverId", kind: "prop", name: Some("serverId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverName", kind: "prop", name: Some("serverName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.coverArtNotice", kind: "prop", name: Some("coverArtNotice") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.plays", kind: "prop", name: Some("plays") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays", tgt: "me.linkna.linkinbio#widgetLastfm.plays:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.latitude", kind: "prop", name: Some("latitude") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.locationName", kind: "prop", name: Some("locationName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.longitude", kind: "prop", name: Some("longitude") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.mapImageRef", kind: "prop", name: Some("mapImageRef") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.style", kind: "prop", name: Some("style") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.zoom", kind: "prop", name: Some("zoom") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.articles", kind: "prop", name: Some("articles") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.bio", kind: "prop", name: Some("bio") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.displayName", kind: "prop", name: Some("displayName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.followerCount", kind: "prop", name: Some("followerCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.profileUrl", kind: "prop", name: Some("profileUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.username", kind: "prop", name: Some("username") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles", tgt: "me.linkna.linkinbio#widgetMedium.articles:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignId", kind: "prop", name: Some("campaignId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignUrl", kind: "prop", name: Some("campaignUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creationName", kind: "prop", name: Some("creationName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creatorName", kind: "prop", name: Some("creatorName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.imageUrl", kind: "prop", name: Some("imageUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.patronCount", kind: "prop", name: Some("patronCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.postCount", kind: "prop", name: Some("postCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.avatarUrl", kind: "prop", name: Some("avatarUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.commentKarma", kind: "prop", name: Some("commentKarma") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.karma", kind: "prop", name: Some("karma") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.linkKarma", kind: "prop", name: Some("linkKarma") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.profileUrl", kind: "prop", name: Some("profileUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts", kind: "prop", name: Some("recentPosts") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.username", kind: "prop", name: Some("username") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.authorName", kind: "prop", name: Some("authorName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.imageUrl", kind: "prop", name: Some("imageUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.postCount", kind: "prop", name: Some("postCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationId", kind: "prop", name: Some("publicationId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationName", kind: "prop", name: Some("publicationName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationUrl", kind: "prop", name: Some("publicationUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.subscriberCount", kind: "prop", name: Some("subscriberCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTealfm", tgt: "me.linkna.linkinbio#widgetTealfm.source", kind: "prop", name: Some("source") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.displayName", kind: "prop", name: Some("displayName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.isLive", kind: "prop", name: Some("isLive") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.profileImageUrl", kind: "prop", name: Some("profileImageUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamGame", kind: "prop", name: Some("streamGame") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamTitle", kind: "prop", name: Some("streamTitle") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.username", kind: "prop", name: Some("username") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.viewerCount", kind: "prop", name: Some("viewerCount") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.alt", kind: "prop", name: Some("alt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.createdAt", kind: "prop", name: Some("createdAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.did", kind: "prop", name: Some("did") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.loop", kind: "prop", name: Some("loop") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.muted", kind: "prop", name: Some("muted") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.showOverlay", kind: "prop", name: Some("showOverlay") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.videoBlobRef", kind: "prop", name: Some("videoBlobRef") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelId", kind: "prop", name: Some("channelId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelName", kind: "prop", name: Some("channelName") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelUrl", kind: "prop", name: Some("channelUrl") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.enabled", kind: "prop", name: Some("enabled") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.id", kind: "prop", name: Some("id") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.latestVideo", kind: "prop", name: Some("latestVideo") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.type", kind: "prop", name: Some("type") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.isShort", kind: "prop", name: Some("isShort") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.publishedAt", kind: "prop", name: Some("publishedAt") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.videoId", kind: "prop", name: Some("videoId") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#headerCard") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant10", kind: "variant", name: Some("#widgetBeehiiv") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant11", kind: "variant", name: Some("#widgetVideo") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant12", kind: "variant", name: Some("#widgetTwitch") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant13", kind: "variant", name: Some("#widgetDiscord") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant14", kind: "variant", name: Some("#widgetReddit") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant15", kind: "variant", name: Some("#widgetMedium") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant16", kind: "variant", name: Some("#widgetMap") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGoodreads") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetGithub") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant4", kind: "variant", name: Some("#widgetTealfm") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant5", kind: "variant", name: Some("#widgetLastfm") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant6", kind: "variant", name: Some("#widgetClock") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant7", kind: "variant", name: Some("#widgetYoutube") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant8", kind: "variant", name: Some("#widgetPatreon") }
- AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant9", kind: "variant", name: Some("#widgetSubstack") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "me.linkna.linkinbio#connectedServices.lastfmUsername" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.alignment" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.text" }AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.claps" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.publishedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.readingTime" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.subtitle" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.title" }AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.url" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.numComments" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.score" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.subreddit" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.title" }AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.url" }AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImage" }AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImageCredit" }AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorSparkles" }AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorStyle" }AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio" }AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.height" }AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.width" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.description" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.imageUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationId" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.label" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.mode" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.targetDate" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.timezone" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.bannerUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.description" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.iconUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.inviteUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.memberCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.presenceCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverId" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.coverArtNotice" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastfmUsername" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays:items" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.latitude" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.locationName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.longitude" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.mapImageRef" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.style" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.zoom" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles:items" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.bio" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.displayName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.followerCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.profileUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.username" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignId" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creationName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creatorName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.imageUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.patronCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.postCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.avatarUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.commentKarma" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.karma" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.linkKarma" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.profileUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts:items" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.username" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.authorName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.coverImageUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.description" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.imageUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.postCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationId" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.subscriberCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTealfm.source" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.displayName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.isLive" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.profileImageUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamGame" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamTitle" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.username" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.viewerCount" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.alt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.aspectRatio" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.createdAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.did" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.loop" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.muted" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.showOverlay" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.title" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.videoBlobRef" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelId" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelName" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelUrl" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.enabled" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.id" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.latestVideo" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.size" }AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.type" }AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo" }AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.isShort" }AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.publishedAt" }AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.title" }AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.videoId" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant10" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant11" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant12" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant13" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant14" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant15" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant16" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant4" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant5" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant6" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant7" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant8" }AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant9" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon.type", sort: "const", value: "patreon" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.type", sort: "const", value: "video" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetReddit.type", sort: "const", value: "reddit" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack.type", sort: "const", value: "substack" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch.type", sort: "const", value: "twitch" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube.type", sort: "const", value: "youtube" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.type", sort: "const", value: "header" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.alignment", sort: "enum", value: "left,center,right" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord.type", sort: "const", value: "discord" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm.type", sort: "const", value: "lastfm" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.alt", sort: "maxLength", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetClock.type", sort: "const", value: "clock" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetMap.type", sort: "const", value: "map" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type", sort: "const", value: "beehiiv" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#headerCard.text", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetVideo.title", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetClock.label", sort: "maxLength", value: "100" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.linkna.linkinbio#widgetMedium.type", sort: "const", value: "medium" }
Additional Notes
- Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#widgetGoodreads") }
- Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGithub") }
- Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetTealfm") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#connectedServices", tgt: "me.linkna.linkinbio#connectedServices.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.alignment", kind: "prop", name: Some("alignment") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.text", kind: "prop", name: Some("text") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.claps", kind: "prop", name: Some("claps") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.publishedAt", kind: "prop", name: Some("publishedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.readingTime", kind: "prop", name: Some("readingTime") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.subtitle", kind: "prop", name: Some("subtitle") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.url", kind: "prop", name: Some("url") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.numComments", kind: "prop", name: Some("numComments") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.score", kind: "prop", name: Some("score") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.subreddit", kind: "prop", name: Some("subreddit") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.url", kind: "prop", name: Some("url") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImage", kind: "prop", name: Some("backgroundImage") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImageCredit", kind: "prop", name: Some("backgroundImageCredit") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorSparkles", kind: "prop", name: Some("cursorSparkles") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorStyle", kind: "prop", name: Some("cursorStyle") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.height", kind: "prop", name: Some("height") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.width", kind: "prop", name: Some("width") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.imageUrl", kind: "prop", name: Some("imageUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationId", kind: "prop", name: Some("publicationId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationName", kind: "prop", name: Some("publicationName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl", kind: "prop", name: Some("publicationUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.label", kind: "prop", name: Some("label") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.mode", kind: "prop", name: Some("mode") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.targetDate", kind: "prop", name: Some("targetDate") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.timezone", kind: "prop", name: Some("timezone") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.bannerUrl", kind: "prop", name: Some("bannerUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.iconUrl", kind: "prop", name: Some("iconUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.inviteUrl", kind: "prop", name: Some("inviteUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.memberCount", kind: "prop", name: Some("memberCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.presenceCount", kind: "prop", name: Some("presenceCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverId", kind: "prop", name: Some("serverId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverName", kind: "prop", name: Some("serverName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.coverArtNotice", kind: "prop", name: Some("coverArtNotice") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.plays", kind: "prop", name: Some("plays") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays", tgt: "me.linkna.linkinbio#widgetLastfm.plays:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.latitude", kind: "prop", name: Some("latitude") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.locationName", kind: "prop", name: Some("locationName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.longitude", kind: "prop", name: Some("longitude") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.mapImageRef", kind: "prop", name: Some("mapImageRef") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.style", kind: "prop", name: Some("style") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.zoom", kind: "prop", name: Some("zoom") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.articles", kind: "prop", name: Some("articles") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.bio", kind: "prop", name: Some("bio") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.displayName", kind: "prop", name: Some("displayName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.followerCount", kind: "prop", name: Some("followerCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.profileUrl", kind: "prop", name: Some("profileUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.username", kind: "prop", name: Some("username") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles", tgt: "me.linkna.linkinbio#widgetMedium.articles:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignId", kind: "prop", name: Some("campaignId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignUrl", kind: "prop", name: Some("campaignUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creationName", kind: "prop", name: Some("creationName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creatorName", kind: "prop", name: Some("creatorName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.imageUrl", kind: "prop", name: Some("imageUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.patronCount", kind: "prop", name: Some("patronCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.postCount", kind: "prop", name: Some("postCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.avatarUrl", kind: "prop", name: Some("avatarUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.commentKarma", kind: "prop", name: Some("commentKarma") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.karma", kind: "prop", name: Some("karma") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.linkKarma", kind: "prop", name: Some("linkKarma") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.profileUrl", kind: "prop", name: Some("profileUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts", kind: "prop", name: Some("recentPosts") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.username", kind: "prop", name: Some("username") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.authorName", kind: "prop", name: Some("authorName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.imageUrl", kind: "prop", name: Some("imageUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.postCount", kind: "prop", name: Some("postCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationId", kind: "prop", name: Some("publicationId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationName", kind: "prop", name: Some("publicationName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationUrl", kind: "prop", name: Some("publicationUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.subscriberCount", kind: "prop", name: Some("subscriberCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTealfm", tgt: "me.linkna.linkinbio#widgetTealfm.source", kind: "prop", name: Some("source") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.displayName", kind: "prop", name: Some("displayName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.isLive", kind: "prop", name: Some("isLive") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.profileImageUrl", kind: "prop", name: Some("profileImageUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamGame", kind: "prop", name: Some("streamGame") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamTitle", kind: "prop", name: Some("streamTitle") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.username", kind: "prop", name: Some("username") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.viewerCount", kind: "prop", name: Some("viewerCount") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.alt", kind: "prop", name: Some("alt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.createdAt", kind: "prop", name: Some("createdAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.did", kind: "prop", name: Some("did") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.loop", kind: "prop", name: Some("loop") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.muted", kind: "prop", name: Some("muted") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.showOverlay", kind: "prop", name: Some("showOverlay") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.videoBlobRef", kind: "prop", name: Some("videoBlobRef") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelId", kind: "prop", name: Some("channelId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelName", kind: "prop", name: Some("channelName") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelUrl", kind: "prop", name: Some("channelUrl") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.enabled", kind: "prop", name: Some("enabled") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.latestVideo", kind: "prop", name: Some("latestVideo") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.type", kind: "prop", name: Some("type") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.isShort", kind: "prop", name: Some("isShort") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.publishedAt", kind: "prop", name: Some("publishedAt") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.videoId", kind: "prop", name: Some("videoId") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#headerCard") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant10", kind: "variant", name: Some("#widgetBeehiiv") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant11", kind: "variant", name: Some("#widgetVideo") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant12", kind: "variant", name: Some("#widgetTwitch") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant13", kind: "variant", name: Some("#widgetDiscord") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant14", kind: "variant", name: Some("#widgetReddit") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant15", kind: "variant", name: Some("#widgetMedium") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant16", kind: "variant", name: Some("#widgetMap") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGoodreads") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetGithub") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant4", kind: "variant", name: Some("#widgetTealfm") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant5", kind: "variant", name: Some("#widgetLastfm") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant6", kind: "variant", name: Some("#widgetClock") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant7", kind: "variant", name: Some("#widgetYoutube") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant8", kind: "variant", name: Some("#widgetPatreon") }
- Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant9", kind: "variant", name: Some("#widgetSubstack") }
1
1
{
2
2
"id": "me.linkna.linkinbio",
3
3
"defs": {
4
4
"main": {
5
5
"key": "literal:self",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"cards"
11
11
],
12
12
"properties": {
13
13
"cards": {
14
14
"type": "array",
15
15
"items": {
16
16
"refs": [
17
17
"#linkCard",
18
+
"#headerCard",
18
19
"#widgetGoodreads",
19
20
"#widgetGithub",
20
-
"#widgetTealfm"
21
+
"#widgetTealfm",
22
+
"#widgetLastfm",
23
+
"#widgetClock",
24
+
"#widgetYoutube",
25
+
"#widgetPatreon",
26
+
"#widgetSubstack",
27
+
"#widgetBeehiiv",
28
+
"#widgetVideo",
29
+
"#widgetTwitch",
30
+
"#widgetDiscord",
31
+
"#widgetReddit",
32
+
"#widgetMedium",
33
+
"#widgetMap"
21
34
],
22
35
"type": "union"
23
36
},
24
-
"description": "Ordered list of cards on the page. Each card is a union of linkCard, widgetGoodreads, widgetGithub, or widgetTealfm."
37
+
"description": "Ordered list of cards on the page."
25
38
},
26
39
"theme": {
27
40
"type": "string",
28
41
"description": "Deprecated: use themeConfig instead."
29
42
},
30
43
"socialIcons": {
31
44
"type": "array",
32
45
"items": {
33
46
"ref": "#socialIcon",
34
47
"type": "ref"
35
48
},
36
49
"description": "Social media icons displayed on the profile."
37
50
},
38
51
"themeConfig": {
39
52
"ref": "#themeConfig",
40
53
"type": "ref"
41
54
},
42
55
"connectedServices": {
43
56
"ref": "#connectedServices",
44
57
"type": "ref"
45
58
}
46
59
}
47
60
},
48
61
"description": "A user's link-in-bio page containing cards, theme configuration, and social icons."
49
62
},
50
63
"linkCard": {
51
64
"type": "object",
52
65
"properties": {
53
66
"id": {
54
67
"type": "string",
55
68
"description": "Unique identifier for the card."
56
69
},
57
70
"url": {
58
71
"type": "string",
59
72
"format": "uri",
60
73
"description": "URL the card links to."
61
74
},
62
75
"text": {
63
76
"type": "string",
64
77
"maxLength": 100,
65
78
"description": "Display text for the card (falls back to URL domain if empty)."
66
79
},
67
80
"type": {
68
81
"type": "string",
69
82
"description": "Card type discriminator. Value: 'link' or absent for link cards."
70
83
},
71
84
"enabled": {
72
85
"type": "boolean",
73
86
"description": "Whether the card is visible on the public page. Defaults to true."
74
87
},
75
88
"highlighted": {
76
89
"type": "boolean",
77
90
"description": "Whether the card is visually highlighted."
78
91
}
79
92
},
80
93
"description": "A standard link card."
81
94
},
95
+
"widgetMap": {
96
+
"type": "object",
97
+
"required": [
98
+
"id",
99
+
"type",
100
+
"locationName",
101
+
"latitude",
102
+
"longitude"
103
+
],
104
+
"properties": {
105
+
"id": {
106
+
"type": "string",
107
+
"description": "Unique identifier for the card."
108
+
},
109
+
"size": {
110
+
"type": "string",
111
+
"description": "Widget display size. Default: 1x1.",
112
+
"knownValues": [
113
+
"1x1",
114
+
"1x2",
115
+
"2x2",
116
+
"2x1"
117
+
]
118
+
},
119
+
"type": {
120
+
"type": "string",
121
+
"const": "map",
122
+
"description": "Card type discriminator."
123
+
},
124
+
"zoom": {
125
+
"type": "integer",
126
+
"description": "Map zoom level (1-18). Default: 12."
127
+
},
128
+
"style": {
129
+
"type": "string",
130
+
"description": "Map style. Default: light.",
131
+
"knownValues": [
132
+
"light",
133
+
"dark"
134
+
]
135
+
},
136
+
"enabled": {
137
+
"type": "boolean",
138
+
"description": "Whether the widget is visible on the public page. Defaults to true."
139
+
},
140
+
"latitude": {
141
+
"type": "string",
142
+
"description": "Latitude coordinate as string (AT Protocol does not support floats)."
143
+
},
144
+
"longitude": {
145
+
"type": "string",
146
+
"description": "Longitude coordinate as string (AT Protocol does not support floats)."
147
+
},
148
+
"mapImageRef": {
149
+
"type": "blob",
150
+
"accept": [
151
+
"image/png",
152
+
"image/jpeg"
153
+
],
154
+
"maxSize": 5000000,
155
+
"description": "Cached static map image blob to avoid repeated Stadia Maps API calls."
156
+
},
157
+
"locationName": {
158
+
"type": "string",
159
+
"description": "Display name for the location."
160
+
}
161
+
},
162
+
"description": "A map location widget card."
163
+
},
164
+
"headerCard": {
165
+
"type": "object",
166
+
"required": [
167
+
"id",
168
+
"type",
169
+
"text"
170
+
],
171
+
"properties": {
172
+
"id": {
173
+
"type": "string",
174
+
"description": "Unique identifier for the card."
175
+
},
176
+
"text": {
177
+
"type": "string",
178
+
"maxLength": 100,
179
+
"description": "Header text displayed as a section divider."
180
+
},
181
+
"type": {
182
+
"type": "string",
183
+
"const": "header",
184
+
"description": "Card type discriminator."
185
+
},
186
+
"enabled": {
187
+
"type": "boolean",
188
+
"description": "Whether the header is visible on the public page. Defaults to true."
189
+
},
190
+
"alignment": {
191
+
"enum": [
192
+
"left",
193
+
"center",
194
+
"right"
195
+
],
196
+
"type": "string",
197
+
"description": "Text alignment for the header. Defaults to the user's button alignment."
198
+
}
199
+
},
200
+
"description": "A section header/divider card."
201
+
},
202
+
"redditPost": {
203
+
"type": "object",
204
+
"required": [
205
+
"title",
206
+
"subreddit",
207
+
"url",
208
+
"score",
209
+
"numComments"
210
+
],
211
+
"properties": {
212
+
"url": {
213
+
"type": "string",
214
+
"description": "Post URL."
215
+
},
216
+
"score": {
217
+
"type": "integer",
218
+
"description": "Post score."
219
+
},
220
+
"title": {
221
+
"type": "string",
222
+
"description": "Post title."
223
+
},
224
+
"subreddit": {
225
+
"type": "string",
226
+
"description": "Subreddit name."
227
+
},
228
+
"numComments": {
229
+
"type": "integer",
230
+
"description": "Number of comments."
231
+
}
232
+
},
233
+
"description": "A Reddit post."
234
+
},
82
235
"socialIcon": {
83
236
"type": "object",
84
237
"required": [
85
238
"id",
86
239
"platform",
87
240
"url"
88
241
],
89
242
"properties": {
90
243
"id": {
91
244
"type": "string",
92
245
"description": "Unique identifier for the icon."
93
246
},
94
247
"url": {
95
248
"type": "string",
96
249
"format": "uri",
97
250
"description": "URL to the user's profile on this platform."
98
251
},
99
252
"platform": {
100
253
"type": "string",
101
254
"description": "Platform identifier (e.g., 'bluesky', 'twitter', 'instagram')."
102
255
}
103
256
},
104
257
"description": "A social media icon link."
105
258
},
106
259
"tealfmPlay": {
107
260
"type": "object",
108
261
"required": [
109
262
"trackName",
110
263
"artistName"
111
264
],
112
265
"properties": {
113
266
"coverUrl": {
114
267
"type": "string",
115
268
"description": "URL to the album cover image (from Cover Art Archive)."
116
269
},
117
270
"originUrl": {
118
271
"type": "string",
119
272
"description": "URL to the track on the original music service."
120
273
},
121
274
"trackName": {
122
275
"type": "string",
123
276
"description": "Track/song name."
124
277
},
125
278
"artistName": {
126
279
"type": "string",
127
280
"description": "Artist name(s)."
128
281
},
129
282
"playedTime": {
130
283
"type": "string",
131
284
"format": "datetime",
132
285
"description": "When the track was played."
133
286
},
134
287
"releaseName": {
135
288
"type": "string",
136
289
"description": "Album/release name."
137
290
}
138
291
},
139
292
"description": "A recently played track from teal.fm."
140
293
},
141
294
"themeConfig": {
142
295
"type": "object",
143
296
"properties": {
144
297
"preset": {
145
298
"type": "string",
146
-
"description": "Theme preset ID."
299
+
"description": "Theme preset ID (e.g., 'custom', 'agate', 'air', 'astrid', 'aura')."
147
300
},
148
301
"fontSize": {
149
302
"type": "string",
150
303
"description": "Font size. Default: md.",
151
304
"knownValues": [
152
305
"sm",
153
306
"md",
154
307
"lg"
155
308
]
156
309
},
157
310
"particles": {
158
311
"type": "string",
159
312
"description": "Background particle effect. Default: none.",
160
313
"knownValues": [
161
314
"none",
162
315
"white",
163
-
"blue"
316
+
"blue",
317
+
"leaves",
318
+
"grid-sm",
319
+
"grid-lg"
164
320
]
165
321
},
166
322
"cardShadow": {
167
323
"type": "string",
168
324
"description": "Card/button shadow intensity.",
169
325
"knownValues": [
170
326
"none",
171
327
"sm",
172
328
"md",
173
329
"lg",
174
330
"xl"
175
331
]
176
332
},
177
333
"fontFamily": {
178
334
"type": "string",
179
335
"description": "Font family for the page."
180
336
},
337
+
"cursorStyle": {
338
+
"type": "string",
339
+
"description": "Custom cursor style. Default: default.",
340
+
"knownValues": [
341
+
"default",
342
+
"hello-kitty"
343
+
]
344
+
},
181
345
"showBranding": {
182
346
"type": "boolean",
183
347
"description": "Whether Linkname branding is visible. Default: true."
184
348
},
185
349
"cardTextColor": {
186
350
"type": "string",
187
351
"description": "Card/button text color."
188
352
},
189
353
"cardHoverColor": {
190
354
"type": "string",
191
355
"description": "Card/button border color on hover."
192
356
},
357
+
"cursorSparkles": {
358
+
"type": "boolean",
359
+
"description": "Whether cursor has sparkle trail. Default: false."
360
+
},
193
361
"backgroundColor": {
194
362
"type": "string",
195
363
"description": "Page background color."
196
364
},
365
+
"backgroundImage": {
366
+
"type": "blob",
367
+
"accept": [
368
+
"image/png",
369
+
"image/jpeg",
370
+
"image/webp"
371
+
],
372
+
"maxSize": 10000000,
373
+
"description": "Background wallpaper image blob."
374
+
},
197
375
"buttonAlignment": {
198
376
"type": "string",
199
377
"description": "Button content alignment. Default: left.",
200
378
"knownValues": [
201
379
"left",
202
380
"right"
203
381
]
204
382
},
205
383
"buttonHoverGlow": {
206
384
"type": "boolean",
207
385
"description": "Whether buttons glow on hover. Default: false."
208
386
},
209
387
"cardBorderColor": {
210
388
"type": "string",
211
389
"description": "Card/button border color."
212
390
},
213
391
"cardBorderRadius": {
214
392
"type": "string",
215
393
"description": "Card/button border radius.",
216
394
"knownValues": [
217
395
"none",
218
396
"sm",
219
397
"md",
220
398
"lg",
221
399
"full"
222
400
]
223
401
},
224
402
"contentCardColor": {
225
403
"type": "string",
226
404
"description": "Card container background color."
227
405
},
228
406
"profileAlignment": {
229
407
"type": "string",
230
408
"description": "Profile section alignment. Default: center.",
231
409
"knownValues": [
232
410
"left",
233
411
"center",
234
412
"right"
235
413
]
236
414
},
237
415
"profileTextColor": {
238
416
"type": "string",
239
417
"description": "Profile section text color."
240
418
},
241
419
"socialIconsColor": {
242
420
"type": "string",
243
421
"description": "Social icons color."
244
422
},
245
423
"socialIconsShape": {
246
424
"type": "string",
247
425
"description": "Social icons container shape. Default: dock.",
248
426
"knownValues": [
249
427
"dock",
250
428
"sphere"
251
429
]
252
430
},
253
431
"backgroundGradient": {
254
432
"type": "string",
255
433
"description": "CSS gradient for the page background."
256
434
},
257
435
"profilePictureSize": {
258
436
"type": "string",
259
437
"description": "Profile picture size. Default: sm.",
260
438
"knownValues": [
261
439
"sm",
262
440
"md",
263
441
"lg"
264
442
]
265
443
},
266
444
"cardBackgroundColor": {
267
445
"type": "string",
268
446
"description": "Individual card/button background color."
269
447
},
270
448
"profilePictureShape": {
271
449
"type": "string",
272
450
"description": "Profile picture shape. Default: circle.",
273
451
"knownValues": [
274
452
"circle",
275
453
"rounded",
276
454
"square"
277
455
]
278
456
},
279
457
"buttonHoverGlowColor": {
280
458
"type": "string",
281
459
"description": "Color for the button hover glow effect."
282
460
},
461
+
"backgroundImageCredit": {
462
+
"type": "string",
463
+
"format": "uri",
464
+
"description": "Optional credit URL for the wallpaper image artist. Stored for attribution purposes only, not displayed on the public page."
465
+
},
283
466
"socialIconsShapeColor": {
284
467
"type": "string",
285
468
"description": "Background color for social icons dock/sphere."
286
469
},
287
470
"socialIconsBorderColor": {
288
471
"type": "string",
289
472
"description": "Border color for social icons dock/sphere."
290
473
}
291
474
},
292
475
"description": "Theme configuration for the page appearance."
293
476
},
477
+
"widgetClock": {
478
+
"type": "object",
479
+
"required": [
480
+
"id",
481
+
"type",
482
+
"mode"
483
+
],
484
+
"properties": {
485
+
"id": {
486
+
"type": "string",
487
+
"description": "Unique identifier for the card."
488
+
},
489
+
"mode": {
490
+
"type": "string",
491
+
"description": "Widget mode: clock (timezone display), countdown (to a target date), or timer (interactive stopwatch).",
492
+
"knownValues": [
493
+
"clock",
494
+
"countdown",
495
+
"timer"
496
+
]
497
+
},
498
+
"size": {
499
+
"type": "string",
500
+
"description": "Widget display size. Default: 1x1.",
501
+
"knownValues": [
502
+
"1x1",
503
+
"1x2",
504
+
"2x2",
505
+
"2x1"
506
+
]
507
+
},
508
+
"type": {
509
+
"type": "string",
510
+
"const": "clock",
511
+
"description": "Card type discriminator."
512
+
},
513
+
"label": {
514
+
"type": "string",
515
+
"maxLength": 100,
516
+
"description": "Optional display label for the widget."
517
+
},
518
+
"enabled": {
519
+
"type": "boolean",
520
+
"description": "Whether the widget is visible on the public page. Defaults to true."
521
+
},
522
+
"timezone": {
523
+
"type": "string",
524
+
"description": "IANA timezone identifier for clock mode (e.g. 'America/New_York')."
525
+
},
526
+
"targetDate": {
527
+
"type": "string",
528
+
"format": "datetime",
529
+
"description": "ISO 8601 target date for countdown mode."
530
+
}
531
+
},
532
+
"description": "A clock, countdown, or stopwatch timer widget card."
533
+
},
534
+
"widgetVideo": {
535
+
"type": "object",
536
+
"required": [
537
+
"id",
538
+
"type",
539
+
"videoBlobRef",
540
+
"did"
541
+
],
542
+
"properties": {
543
+
"id": {
544
+
"type": "string",
545
+
"description": "Unique identifier for the card."
546
+
},
547
+
"alt": {
548
+
"type": "string",
549
+
"maxLength": 1000,
550
+
"description": "Alt text for accessibility."
551
+
},
552
+
"did": {
553
+
"type": "string",
554
+
"description": "Author DID for constructing PDS blob URLs."
555
+
},
556
+
"loop": {
557
+
"type": "boolean",
558
+
"description": "Whether the video loops. Defaults to true."
559
+
},
560
+
"size": {
561
+
"type": "string",
562
+
"description": "Widget display size. Default: 1x1.",
563
+
"knownValues": [
564
+
"1x1",
565
+
"1x2",
566
+
"2x2",
567
+
"2x1"
568
+
]
569
+
},
570
+
"type": {
571
+
"type": "string",
572
+
"const": "video",
573
+
"description": "Card type discriminator."
574
+
},
575
+
"muted": {
576
+
"type": "boolean",
577
+
"description": "Whether the video is muted. Defaults to true."
578
+
},
579
+
"title": {
580
+
"type": "string",
581
+
"maxLength": 100,
582
+
"description": "Video title overlay."
583
+
},
584
+
"enabled": {
585
+
"type": "boolean",
586
+
"description": "Whether the widget is visible on the public page. Defaults to true."
587
+
},
588
+
"createdAt": {
589
+
"type": "string",
590
+
"format": "datetime",
591
+
"description": "When the video was uploaded."
592
+
},
593
+
"aspectRatio": {
594
+
"ref": "#videoAspectRatio",
595
+
"type": "ref",
596
+
"description": "Video aspect ratio."
597
+
},
598
+
"showOverlay": {
599
+
"type": "boolean",
600
+
"description": "Whether to show the title overlay. Defaults to false."
601
+
},
602
+
"videoBlobRef": {
603
+
"type": "blob",
604
+
"description": "Reference to the uploaded video blob."
605
+
}
606
+
},
607
+
"description": "A video widget card."
608
+
},
294
609
"widgetGithub": {
295
610
"type": "object",
296
611
"required": [
297
612
"id",
298
613
"type",
299
614
"githubUsername",
300
615
"contributions"
301
616
],
302
617
"properties": {
303
618
"id": {
304
619
"type": "string",
305
620
"description": "Unique identifier for the card."
306
621
},
307
622
"size": {
308
623
"type": "string",
309
624
"description": "Widget display size. Default: 1x1.",
310
625
"knownValues": [
311
626
"1x1",
312
627
"1x2",
313
628
"2x2"
314
629
]
315
630
},
316
631
"type": {
317
632
"type": "string",
318
633
"const": "github",
319
634
"description": "Card type discriminator."
320
635
},
321
636
"enabled": {
322
637
"type": "boolean",
323
638
"description": "Whether the widget is visible on the public page. Defaults to true."
324
639
},
325
640
"lastSyncedAt": {
326
641
"type": "string",
327
642
"format": "datetime",
328
643
"description": "When the contribution data was last fetched from GitHub."
329
644
},
330
645
"contributions": {
331
646
"type": "array",
332
647
"items": {
333
648
"ref": "#githubContributionDay",
334
649
"type": "ref"
335
650
},
336
651
"description": "Contribution data for the last year."
337
652
},
338
653
"githubUsername": {
339
654
"type": "string",
340
655
"description": "GitHub username."
341
656
},
342
657
"totalContributions": {
343
658
"type": "integer",
344
659
"description": "Total number of contributions in the last year."
345
660
}
346
661
},
347
662
"description": "A GitHub contributions graph widget card."
348
663
},
664
+
"widgetLastfm": {
665
+
"type": "object",
666
+
"required": [
667
+
"id",
668
+
"type",
669
+
"lastfmUsername",
670
+
"plays"
671
+
],
672
+
"properties": {
673
+
"id": {
674
+
"type": "string",
675
+
"description": "Unique identifier for the card."
676
+
},
677
+
"size": {
678
+
"type": "string",
679
+
"description": "Widget display size. Default: 1x1.",
680
+
"knownValues": [
681
+
"1x1",
682
+
"1x2",
683
+
"2x2"
684
+
]
685
+
},
686
+
"type": {
687
+
"type": "string",
688
+
"const": "lastfm",
689
+
"description": "Card type discriminator."
690
+
},
691
+
"plays": {
692
+
"type": "array",
693
+
"items": {
694
+
"ref": "#tealfmPlay",
695
+
"type": "ref"
696
+
},
697
+
"description": "Recently played tracks from Last.fm."
698
+
},
699
+
"enabled": {
700
+
"type": "boolean",
701
+
"description": "Whether the widget is visible on the public page. Defaults to true."
702
+
},
703
+
"lastSyncedAt": {
704
+
"type": "string",
705
+
"format": "datetime",
706
+
"description": "When the play data was last fetched from Last.fm."
707
+
},
708
+
"coverArtNotice": {
709
+
"type": "string",
710
+
"description": "Copyright notice for cover art images."
711
+
},
712
+
"lastfmUsername": {
713
+
"type": "string",
714
+
"description": "Last.fm username for fetching scrobbles."
715
+
}
716
+
},
717
+
"description": "A Last.fm recently played tracks widget card."
718
+
},
719
+
"widgetMedium": {
720
+
"type": "object",
721
+
"required": [
722
+
"id",
723
+
"type",
724
+
"username",
725
+
"profileUrl"
726
+
],
727
+
"properties": {
728
+
"id": {
729
+
"type": "string",
730
+
"description": "Unique identifier for the card."
731
+
},
732
+
"bio": {
733
+
"type": "string",
734
+
"description": "Medium bio."
735
+
},
736
+
"size": {
737
+
"type": "string",
738
+
"description": "Widget display size. Default: 1x1.",
739
+
"knownValues": [
740
+
"1x1",
741
+
"1x2",
742
+
"2x2",
743
+
"2x1"
744
+
]
745
+
},
746
+
"type": {
747
+
"type": "string",
748
+
"const": "medium",
749
+
"description": "Card type discriminator."
750
+
},
751
+
"enabled": {
752
+
"type": "boolean",
753
+
"description": "Whether the widget is visible on the public page. Defaults to true."
754
+
},
755
+
"articles": {
756
+
"type": "array",
757
+
"items": {
758
+
"ref": "#mediumArticle",
759
+
"type": "ref"
760
+
},
761
+
"description": "Recent articles."
762
+
},
763
+
"username": {
764
+
"type": "string",
765
+
"description": "Medium username."
766
+
},
767
+
"profileUrl": {
768
+
"type": "string",
769
+
"description": "Medium profile URL."
770
+
},
771
+
"displayName": {
772
+
"type": "string",
773
+
"description": "Medium display name."
774
+
},
775
+
"lastSyncedAt": {
776
+
"type": "string",
777
+
"format": "datetime",
778
+
"description": "When the Medium data was last fetched."
779
+
},
780
+
"followerCount": {
781
+
"type": "integer",
782
+
"description": "Number of followers."
783
+
}
784
+
},
785
+
"description": "A Medium profile widget card."
786
+
},
787
+
"widgetReddit": {
788
+
"type": "object",
789
+
"required": [
790
+
"id",
791
+
"type",
792
+
"username",
793
+
"profileUrl"
794
+
],
795
+
"properties": {
796
+
"id": {
797
+
"type": "string",
798
+
"description": "Unique identifier for the card."
799
+
},
800
+
"size": {
801
+
"type": "string",
802
+
"description": "Widget display size. Default: 1x1.",
803
+
"knownValues": [
804
+
"1x1",
805
+
"1x2",
806
+
"2x2",
807
+
"2x1"
808
+
]
809
+
},
810
+
"type": {
811
+
"type": "string",
812
+
"const": "reddit",
813
+
"description": "Card type discriminator."
814
+
},
815
+
"karma": {
816
+
"type": "integer",
817
+
"description": "Total karma."
818
+
},
819
+
"enabled": {
820
+
"type": "boolean",
821
+
"description": "Whether the widget is visible on the public page. Defaults to true."
822
+
},
823
+
"username": {
824
+
"type": "string",
825
+
"description": "Reddit username."
826
+
},
827
+
"avatarUrl": {
828
+
"type": "string",
829
+
"description": "Reddit avatar URL."
830
+
},
831
+
"linkKarma": {
832
+
"type": "integer",
833
+
"description": "Link karma."
834
+
},
835
+
"profileUrl": {
836
+
"type": "string",
837
+
"description": "Reddit profile URL."
838
+
},
839
+
"recentPosts": {
840
+
"type": "array",
841
+
"items": {
842
+
"ref": "#redditPost",
843
+
"type": "ref"
844
+
},
845
+
"description": "Recent posts."
846
+
},
847
+
"commentKarma": {
848
+
"type": "integer",
849
+
"description": "Comment karma."
850
+
},
851
+
"lastSyncedAt": {
852
+
"type": "string",
853
+
"format": "datetime",
854
+
"description": "When the Reddit data was last fetched."
855
+
}
856
+
},
857
+
"description": "A Reddit profile widget card."
858
+
},
349
859
"widgetTealfm": {
350
860
"type": "object",
351
861
"required": [
352
862
"id",
353
863
"type",
354
864
"plays"
355
865
],
356
866
"properties": {
357
867
"id": {
358
868
"type": "string",
359
869
"description": "Unique identifier for the card."
360
870
},
361
871
"size": {
362
872
"type": "string",
363
873
"description": "Widget display size. Default: 1x1.",
364
874
"knownValues": [
365
875
"1x1",
366
876
"1x2",
367
877
"2x2"
368
878
]
369
879
},
370
880
"type": {
371
881
"type": "string",
372
882
"const": "tealfm",
373
883
"description": "Card type discriminator."
374
884
},
375
885
"plays": {
376
886
"type": "array",
377
887
"items": {
378
888
"ref": "#tealfmPlay",
379
889
"type": "ref"
380
890
},
381
891
"description": "Recently played tracks."
382
892
},
893
+
"source": {
894
+
"type": "string",
895
+
"description": "Data source for the widget. 'lastfm' for imported Last.fm scrobbles, 'tealfm' (default) for native AT Protocol plays.",
896
+
"knownValues": [
897
+
"tealfm",
898
+
"lastfm"
899
+
]
900
+
},
383
901
"enabled": {
384
902
"type": "boolean",
385
903
"description": "Whether the widget is visible on the public page. Defaults to true."
386
904
},
387
905
"lastSyncedAt": {
388
906
"type": "string",
389
907
"format": "datetime",
390
908
"description": "When the play data was last fetched from the PDS."
391
909
},
392
910
"coverArtNotice": {
393
911
"type": "string",
394
912
"description": "Copyright notice for cover art images."
395
913
}
396
914
},
397
915
"description": "A teal.fm recently played tracks widget card."
398
916
},
917
+
"widgetTwitch": {
918
+
"type": "object",
919
+
"required": [
920
+
"id",
921
+
"type",
922
+
"username"
923
+
],
924
+
"properties": {
925
+
"id": {
926
+
"type": "string",
927
+
"description": "Unique identifier for the card."
928
+
},
929
+
"size": {
930
+
"type": "string",
931
+
"description": "Widget display size. Default: 1x1.",
932
+
"knownValues": [
933
+
"1x1",
934
+
"1x2",
935
+
"2x2",
936
+
"2x1"
937
+
]
938
+
},
939
+
"type": {
940
+
"type": "string",
941
+
"const": "twitch",
942
+
"description": "Card type discriminator."
943
+
},
944
+
"isLive": {
945
+
"type": "boolean",
946
+
"description": "Whether the channel is currently live."
947
+
},
948
+
"enabled": {
949
+
"type": "boolean",
950
+
"description": "Whether the widget is visible on the public page. Defaults to true."
951
+
},
952
+
"username": {
953
+
"type": "string",
954
+
"description": "Twitch username."
955
+
},
956
+
"streamGame": {
957
+
"type": "string",
958
+
"description": "Current stream game/category."
959
+
},
960
+
"displayName": {
961
+
"type": "string",
962
+
"description": "Twitch display name."
963
+
},
964
+
"streamTitle": {
965
+
"type": "string",
966
+
"description": "Current stream title."
967
+
},
968
+
"viewerCount": {
969
+
"type": "integer",
970
+
"description": "Current viewer count."
971
+
},
972
+
"lastSyncedAt": {
973
+
"type": "string",
974
+
"format": "datetime",
975
+
"description": "When the channel data was last fetched."
976
+
},
977
+
"profileImageUrl": {
978
+
"type": "string",
979
+
"description": "Twitch profile image URL."
980
+
}
981
+
},
982
+
"description": "A Twitch channel widget card."
983
+
},
984
+
"youtubeVideo": {
985
+
"type": "object",
986
+
"required": [
987
+
"videoId",
988
+
"title",
989
+
"publishedAt"
990
+
],
991
+
"properties": {
992
+
"title": {
993
+
"type": "string",
994
+
"description": "Video title."
995
+
},
996
+
"isShort": {
997
+
"type": "boolean",
998
+
"description": "Whether this is a YouTube Short."
999
+
},
1000
+
"videoId": {
1001
+
"type": "string",
1002
+
"description": "YouTube video ID."
1003
+
},
1004
+
"publishedAt": {
1005
+
"type": "string",
1006
+
"description": "When the video was published."
1007
+
}
1008
+
},
1009
+
"description": "A YouTube video."
1010
+
},
399
1011
"goodreadsBook": {
400
1012
"type": "object",
401
1013
"required": [
402
1014
"title",
403
1015
"author"
404
1016
],
405
1017
"properties": {
406
1018
"link": {
407
1019
"type": "string",
408
1020
"description": "URL to the book on Goodreads."
409
1021
},
410
1022
"title": {
411
1023
"type": "string",
412
1024
"description": "Book title."
413
1025
},
414
1026
"author": {
415
1027
"type": "string",
416
1028
"description": "Book author."
417
1029
},
418
1030
"rating": {
419
1031
"type": "integer",
420
1032
"maximum": 5,
421
1033
"minimum": 0,
422
1034
"description": "User's rating (1-5), or absent if unrated."
423
1035
},
424
1036
"coverUrl": {
425
1037
"type": "string",
426
1038
"description": "URL to the book cover image."
427
1039
}
428
1040
},
429
1041
"description": "A book from a Goodreads shelf."
430
1042
},
1043
+
"mediumArticle": {
1044
+
"type": "object",
1045
+
"required": [
1046
+
"title",
1047
+
"url",
1048
+
"publishedAt",
1049
+
"claps"
1050
+
],
1051
+
"properties": {
1052
+
"url": {
1053
+
"type": "string",
1054
+
"description": "Article URL."
1055
+
},
1056
+
"claps": {
1057
+
"type": "integer",
1058
+
"description": "Number of claps."
1059
+
},
1060
+
"title": {
1061
+
"type": "string",
1062
+
"description": "Article title."
1063
+
},
1064
+
"subtitle": {
1065
+
"type": "string",
1066
+
"description": "Article subtitle."
1067
+
},
1068
+
"publishedAt": {
1069
+
"type": "string",
1070
+
"description": "When the article was published."
1071
+
},
1072
+
"readingTime": {
1073
+
"type": "integer",
1074
+
"description": "Estimated reading time in minutes."
1075
+
}
1076
+
},
1077
+
"description": "A Medium article."
1078
+
},
1079
+
"widgetBeehiiv": {
1080
+
"type": "object",
1081
+
"required": [
1082
+
"id",
1083
+
"type",
1084
+
"publicationId",
1085
+
"publicationName",
1086
+
"publicationUrl"
1087
+
],
1088
+
"properties": {
1089
+
"id": {
1090
+
"type": "string",
1091
+
"description": "Unique identifier for the card."
1092
+
},
1093
+
"size": {
1094
+
"type": "string",
1095
+
"description": "Widget display size. Default: 1x1.",
1096
+
"knownValues": [
1097
+
"1x1",
1098
+
"1x2",
1099
+
"2x2",
1100
+
"2x1"
1101
+
]
1102
+
},
1103
+
"type": {
1104
+
"type": "string",
1105
+
"const": "beehiiv",
1106
+
"description": "Card type discriminator."
1107
+
},
1108
+
"enabled": {
1109
+
"type": "boolean",
1110
+
"description": "Whether the widget is visible on the public page. Defaults to true."
1111
+
},
1112
+
"imageUrl": {
1113
+
"type": "string",
1114
+
"description": "Publication image URL."
1115
+
},
1116
+
"description": {
1117
+
"type": "string",
1118
+
"description": "Publication description."
1119
+
},
1120
+
"lastSyncedAt": {
1121
+
"type": "string",
1122
+
"format": "datetime",
1123
+
"description": "When the publication data was last fetched."
1124
+
},
1125
+
"publicationId": {
1126
+
"type": "string",
1127
+
"description": "Beehiiv publication ID."
1128
+
},
1129
+
"publicationUrl": {
1130
+
"type": "string",
1131
+
"description": "URL to the Beehiiv publication."
1132
+
},
1133
+
"publicationName": {
1134
+
"type": "string",
1135
+
"description": "Beehiiv publication name."
1136
+
}
1137
+
},
1138
+
"description": "A Beehiiv publication widget card."
1139
+
},
1140
+
"widgetDiscord": {
1141
+
"type": "object",
1142
+
"required": [
1143
+
"id",
1144
+
"type",
1145
+
"serverId",
1146
+
"serverName",
1147
+
"inviteUrl"
1148
+
],
1149
+
"properties": {
1150
+
"id": {
1151
+
"type": "string",
1152
+
"description": "Unique identifier for the card."
1153
+
},
1154
+
"size": {
1155
+
"type": "string",
1156
+
"description": "Widget display size. Default: 1x1.",
1157
+
"knownValues": [
1158
+
"1x1",
1159
+
"1x2",
1160
+
"2x2",
1161
+
"2x1"
1162
+
]
1163
+
},
1164
+
"type": {
1165
+
"type": "string",
1166
+
"const": "discord",
1167
+
"description": "Card type discriminator."
1168
+
},
1169
+
"enabled": {
1170
+
"type": "boolean",
1171
+
"description": "Whether the widget is visible on the public page. Defaults to true."
1172
+
},
1173
+
"iconUrl": {
1174
+
"type": "string",
1175
+
"description": "Server icon URL."
1176
+
},
1177
+
"serverId": {
1178
+
"type": "string",
1179
+
"description": "Discord server ID."
1180
+
},
1181
+
"bannerUrl": {
1182
+
"type": "string",
1183
+
"description": "Server banner URL."
1184
+
},
1185
+
"inviteUrl": {
1186
+
"type": "string",
1187
+
"description": "Discord invite URL."
1188
+
},
1189
+
"serverName": {
1190
+
"type": "string",
1191
+
"description": "Discord server name."
1192
+
},
1193
+
"description": {
1194
+
"type": "string",
1195
+
"description": "Server description."
1196
+
},
1197
+
"memberCount": {
1198
+
"type": "integer",
1199
+
"description": "Total member count."
1200
+
},
1201
+
"lastSyncedAt": {
1202
+
"type": "string",
1203
+
"format": "datetime",
1204
+
"description": "When the server data was last fetched."
1205
+
},
1206
+
"presenceCount": {
1207
+
"type": "integer",
1208
+
"description": "Online member count."
1209
+
}
1210
+
},
1211
+
"description": "A Discord server widget card."
1212
+
},
1213
+
"widgetPatreon": {
1214
+
"type": "object",
1215
+
"required": [
1216
+
"id",
1217
+
"type",
1218
+
"campaignId",
1219
+
"creatorName",
1220
+
"campaignUrl"
1221
+
],
1222
+
"properties": {
1223
+
"id": {
1224
+
"type": "string",
1225
+
"description": "Unique identifier for the card."
1226
+
},
1227
+
"size": {
1228
+
"type": "string",
1229
+
"description": "Widget display size. Default: 1x1.",
1230
+
"knownValues": [
1231
+
"1x1",
1232
+
"1x2",
1233
+
"2x2",
1234
+
"2x1"
1235
+
]
1236
+
},
1237
+
"type": {
1238
+
"type": "string",
1239
+
"const": "patreon",
1240
+
"description": "Card type discriminator."
1241
+
},
1242
+
"enabled": {
1243
+
"type": "boolean",
1244
+
"description": "Whether the widget is visible on the public page. Defaults to true."
1245
+
},
1246
+
"imageUrl": {
1247
+
"type": "string",
1248
+
"description": "Campaign image URL."
1249
+
},
1250
+
"postCount": {
1251
+
"type": "integer",
1252
+
"description": "Number of posts."
1253
+
},
1254
+
"campaignId": {
1255
+
"type": "string",
1256
+
"description": "Patreon campaign ID."
1257
+
},
1258
+
"campaignUrl": {
1259
+
"type": "string",
1260
+
"description": "URL to the Patreon campaign."
1261
+
},
1262
+
"creatorName": {
1263
+
"type": "string",
1264
+
"description": "Patreon creator name."
1265
+
},
1266
+
"patronCount": {
1267
+
"type": "integer",
1268
+
"description": "Number of patrons."
1269
+
},
1270
+
"creationName": {
1271
+
"type": "string",
1272
+
"description": "Name of the creation/project."
1273
+
},
1274
+
"lastSyncedAt": {
1275
+
"type": "string",
1276
+
"format": "datetime",
1277
+
"description": "When the campaign data was last fetched."
1278
+
}
1279
+
},
1280
+
"description": "A Patreon campaign widget card."
1281
+
},
1282
+
"widgetYoutube": {
1283
+
"type": "object",
1284
+
"required": [
1285
+
"id",
1286
+
"type",
1287
+
"channelId",
1288
+
"channelName",
1289
+
"channelUrl"
1290
+
],
1291
+
"properties": {
1292
+
"id": {
1293
+
"type": "string",
1294
+
"description": "Unique identifier for the card."
1295
+
},
1296
+
"size": {
1297
+
"type": "string",
1298
+
"description": "Widget display size. Default: 1x1.",
1299
+
"knownValues": [
1300
+
"1x1",
1301
+
"1x2",
1302
+
"2x2",
1303
+
"2x1"
1304
+
]
1305
+
},
1306
+
"type": {
1307
+
"type": "string",
1308
+
"const": "youtube",
1309
+
"description": "Card type discriminator."
1310
+
},
1311
+
"enabled": {
1312
+
"type": "boolean",
1313
+
"description": "Whether the widget is visible on the public page. Defaults to true."
1314
+
},
1315
+
"channelId": {
1316
+
"type": "string",
1317
+
"description": "YouTube channel ID."
1318
+
},
1319
+
"channelUrl": {
1320
+
"type": "string",
1321
+
"description": "URL to the YouTube channel."
1322
+
},
1323
+
"channelName": {
1324
+
"type": "string",
1325
+
"description": "YouTube channel name."
1326
+
},
1327
+
"latestVideo": {
1328
+
"ref": "#youtubeVideo",
1329
+
"type": "ref",
1330
+
"description": "The latest video from the channel."
1331
+
},
1332
+
"lastSyncedAt": {
1333
+
"type": "string",
1334
+
"format": "datetime",
1335
+
"description": "When the video data was last fetched."
1336
+
}
1337
+
},
1338
+
"description": "A YouTube channel widget card."
1339
+
},
1340
+
"widgetSubstack": {
1341
+
"type": "object",
1342
+
"required": [
1343
+
"id",
1344
+
"type",
1345
+
"publicationId",
1346
+
"publicationName",
1347
+
"publicationUrl"
1348
+
],
1349
+
"properties": {
1350
+
"id": {
1351
+
"type": "string",
1352
+
"description": "Unique identifier for the card."
1353
+
},
1354
+
"size": {
1355
+
"type": "string",
1356
+
"description": "Widget display size. Default: 1x1.",
1357
+
"knownValues": [
1358
+
"1x1",
1359
+
"1x2",
1360
+
"2x2",
1361
+
"2x1"
1362
+
]
1363
+
},
1364
+
"type": {
1365
+
"type": "string",
1366
+
"const": "substack",
1367
+
"description": "Card type discriminator."
1368
+
},
1369
+
"enabled": {
1370
+
"type": "boolean",
1371
+
"description": "Whether the widget is visible on the public page. Defaults to true."
1372
+
},
1373
+
"imageUrl": {
1374
+
"type": "string",
1375
+
"description": "Publication image URL."
1376
+
},
1377
+
"postCount": {
1378
+
"type": "integer",
1379
+
"description": "Number of posts."
1380
+
},
1381
+
"authorName": {
1382
+
"type": "string",
1383
+
"description": "Author name."
1384
+
},
1385
+
"description": {
1386
+
"type": "string",
1387
+
"description": "Publication description."
1388
+
},
1389
+
"lastSyncedAt": {
1390
+
"type": "string",
1391
+
"format": "datetime",
1392
+
"description": "When the publication data was last fetched."
1393
+
},
1394
+
"coverImageUrl": {
1395
+
"type": "string",
1396
+
"description": "Publication cover image URL."
1397
+
},
1398
+
"publicationId": {
1399
+
"type": "string",
1400
+
"description": "Substack publication ID."
1401
+
},
1402
+
"publicationUrl": {
1403
+
"type": "string",
1404
+
"description": "URL to the Substack publication."
1405
+
},
1406
+
"publicationName": {
1407
+
"type": "string",
1408
+
"description": "Substack publication name."
1409
+
},
1410
+
"subscriberCount": {
1411
+
"type": "integer",
1412
+
"description": "Number of subscribers."
1413
+
}
1414
+
},
1415
+
"description": "A Substack publication widget card."
1416
+
},
431
1417
"widgetGoodreads": {
432
1418
"type": "object",
433
1419
"required": [
434
1420
"id",
435
1421
"type",
436
1422
"goodreadsUserId",
437
1423
"shelf",
438
1424
"books"
439
1425
],
440
1426
"properties": {
441
1427
"id": {
442
1428
"type": "string",
443
1429
"description": "Unique identifier for the card."
444
1430
},
445
1431
"size": {
446
1432
"type": "string",
447
1433
"description": "Widget display size. Default: 1x1.",
448
1434
"knownValues": [
449
1435
"1x1",
450
1436
"1x2",
451
1437
"2x2"
452
1438
]
453
1439
},
454
1440
"type": {
455
1441
"type": "string",
456
1442
"const": "goodreads",
457
1443
"description": "Card type discriminator."
458
1444
},
459
1445
"books": {
460
1446
"type": "array",
461
1447
"items": {
462
1448
"ref": "#goodreadsBook",
463
1449
"type": "ref"
464
1450
},
465
1451
"description": "Books on the currently-reading shelf."
466
1452
},
467
1453
"shelf": {
468
1454
"type": "string",
469
1455
"description": "Shelf name (currently-reading, read, or to-read)."
470
1456
},
471
1457
"enabled": {
472
1458
"type": "boolean",
473
1459
"description": "Whether the widget is visible on the public page. Defaults to true."
474
1460
},
475
1461
"readBooks": {
476
1462
"type": "array",
477
1463
"items": {
478
1464
"ref": "#goodreadsBook",
479
1465
"type": "ref"
480
1466
},
481
1467
"description": "Books on the read shelf (used by 1x2 size)."
482
1468
},
483
1469
"lastSyncedAt": {
484
1470
"type": "string",
485
1471
"format": "datetime",
486
1472
"description": "When the book data was last fetched from Goodreads."
487
1473
},
488
1474
"goodreadsUserId": {
489
1475
"type": "string",
490
1476
"description": "Goodreads numeric user ID."
491
1477
}
492
1478
},
493
1479
"description": "A Goodreads bookshelf widget card."
494
1480
},
1481
+
"videoAspectRatio": {
1482
+
"type": "object",
1483
+
"required": [
1484
+
"width",
1485
+
"height"
1486
+
],
1487
+
"properties": {
1488
+
"width": {
1489
+
"type": "integer",
1490
+
"description": "Video width."
1491
+
},
1492
+
"height": {
1493
+
"type": "integer",
1494
+
"description": "Video height."
1495
+
}
1496
+
},
1497
+
"description": "Video aspect ratio dimensions."
1498
+
},
495
1499
"connectedServices": {
496
1500
"type": "object",
497
1501
"properties": {
498
1502
"githubUsername": {
499
1503
"type": "string",
500
1504
"description": "GitHub username."
501
1505
},
1506
+
"lastfmUsername": {
1507
+
"type": "string",
1508
+
"description": "Last.fm username."
1509
+
},
502
1510
"goodreadsUserId": {
503
1511
"type": "string",
504
1512
"description": "Goodreads numeric user ID."
505
1513
}
506
1514
},
507
1515
"description": "Saved service credentials/identifiers for pre-filling widget forms."
508
1516
},
509
1517
"githubContributionDay": {
510
1518
"type": "object",
511
1519
"required": [
512
1520
"date",
513
1521
"count",
514
1522
"level"
515
1523
],
516
1524
"properties": {
517
1525
"date": {
518
1526
"type": "string",
519
1527
"description": "Date in YYYY-MM-DD format."
520
1528
},
521
1529
"count": {
522
1530
"type": "integer",
523
1531
"description": "Number of contributions on this day."
524
1532
},
525
1533
"level": {
526
1534
"type": "integer",
527
1535
"maximum": 4,
528
1536
"minimum": 0,
529
1537
"description": "Contribution intensity level (0=none, 4=highest)."
530
1538
}
531
1539
},
532
1540
"description": "A single day's contribution data from GitHub."
533
1541
}
534
1542
},
535
1543
"$type": "com.atproto.lexicon.schema",
536
1544
"lexicon": 1
537
1545
}