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