[{"data":1,"prerenderedAt":644},["ShallowReactive",2],{"format-page-\u002Fformat":3},{"id":4,"title":5,"body":6,"description":16,"extension":637,"meta":638,"navigation":639,"path":640,"seo":641,"stem":642,"__hash__":643},"format\u002Fformat\u002Findex.md","PluralPort Format",{"type":7,"value":8,"toc":630},"minimark",[9,13,17,20,25,48,58,62,94,98,101,471,475,555,559,566,617,626],[10,11,5],"h1",{"id":12},"pluralport-format",[14,15,16],"p",{},"Draft v0.1",[14,18,19],{},"This is the starting point for the PluralPort format spec. It covers the general rules, the top-level file envelope, and the shared fragments that appear across most records.",[21,22,24],"h2",{"id":23},"pages","Pages",[26,27,28,36,42],"ul",{},[29,30,31],"li",{},[32,33,35],"a",{"href":34},"\u002Fformat\u002Frecords","Records",[29,37,38],{},[32,39,41],{"href":40},"\u002Fformat\u002Ffronting","Fronting",[29,43,44],{},[32,45,47],{"href":46},"\u002Fformat\u002Fmodules","Modules and contract",[14,49,50,51,57],{},"Looking to move your own data rather than implement the format? The ",[32,52,56],{"href":53,"rel":54},"https:\u002F\u002Fpluralport.github.io\u002Fpluralport-converter\u002F",[55],"nofollow","PluralPort Converter"," turns an export from an app that does not write PluralPort files yet into one, entirely in your browser.",[21,59,61],{"id":60},"data-conventions","Data conventions",[63,64,65,68,71,74,82,88],"ol",{},[29,66,67],{},"JSON is the canonical interchange format.",[29,69,70],{},"Timestamps use ISO-8601 in UTC.",[29,72,73],{},"Records use file-local IDs.",[29,75,76,77,81],{},"Original IDs live in ",[78,79,80],"code",{},"source_refs",".",[29,83,84,85,81],{},"App-specific fields live in namespaced ",[78,86,87],{},"extensions",[29,89,90,91,81],{},"Loss or degradation should be reported in ",[78,92,93],{},"warnings",[21,95,97],{"id":96},"top-level-envelope","Top-level envelope",[14,99,100],{},"A PluralPort file is a JSON object with producer metadata, a capabilities declaration, and a set of module arrays.",[102,103,108],"pre",{"className":104,"code":105,"language":106,"meta":107,"style":107},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"pluralport_version\": \"0.1\",\n  \"exported_at\": \"2026-04-29T18:00:00Z\",\n  \"producer\": {\n    \"app\": \"Sheaf\",\n    \"app_version\": \"1.4.2\",\n    \"app_id\": \"sheaf\"\n  },\n  \"capabilities\": {\n    \"modules\": [\"systems\", \"members\", \"groups\", \"taxonomy\", \"notes\", \"assets\"]\n  },\n  \"systems\": [],\n  \"members\": [],\n  \"groups\": [],\n  \"front_periods\": [],\n  \"front_events\": [],\n  \"notes\": [],\n  \"assets\": [],\n  \"extensions\": {},\n  \"warnings\": []\n}\n","json","",[78,109,110,119,147,168,183,206,227,247,253,267,338,343,357,370,383,397,411,424,437,451,465],{"__ignoreMap":107},[111,112,115],"span",{"class":113,"line":114},"line",1,[111,116,118],{"class":117},"sMK4o","{\n",[111,120,122,125,129,132,135,138,142,144],{"class":113,"line":121},2,[111,123,124],{"class":117},"  \"",[111,126,128],{"class":127},"spNyl","pluralport_version",[111,130,131],{"class":117},"\"",[111,133,134],{"class":117},":",[111,136,137],{"class":117}," \"",[111,139,141],{"class":140},"sfazB","0.1",[111,143,131],{"class":117},[111,145,146],{"class":117},",\n",[111,148,150,152,155,157,159,161,164,166],{"class":113,"line":149},3,[111,151,124],{"class":117},[111,153,154],{"class":127},"exported_at",[111,156,131],{"class":117},[111,158,134],{"class":117},[111,160,137],{"class":117},[111,162,163],{"class":140},"2026-04-29T18:00:00Z",[111,165,131],{"class":117},[111,167,146],{"class":117},[111,169,171,173,176,178,180],{"class":113,"line":170},4,[111,172,124],{"class":117},[111,174,175],{"class":127},"producer",[111,177,131],{"class":117},[111,179,134],{"class":117},[111,181,182],{"class":117}," {\n",[111,184,186,189,193,195,197,199,202,204],{"class":113,"line":185},5,[111,187,188],{"class":117},"    \"",[111,190,192],{"class":191},"sBMFI","app",[111,194,131],{"class":117},[111,196,134],{"class":117},[111,198,137],{"class":117},[111,200,201],{"class":140},"Sheaf",[111,203,131],{"class":117},[111,205,146],{"class":117},[111,207,209,211,214,216,218,220,223,225],{"class":113,"line":208},6,[111,210,188],{"class":117},[111,212,213],{"class":191},"app_version",[111,215,131],{"class":117},[111,217,134],{"class":117},[111,219,137],{"class":117},[111,221,222],{"class":140},"1.4.2",[111,224,131],{"class":117},[111,226,146],{"class":117},[111,228,230,232,235,237,239,241,244],{"class":113,"line":229},7,[111,231,188],{"class":117},[111,233,234],{"class":191},"app_id",[111,236,131],{"class":117},[111,238,134],{"class":117},[111,240,137],{"class":117},[111,242,243],{"class":140},"sheaf",[111,245,246],{"class":117},"\"\n",[111,248,250],{"class":113,"line":249},8,[111,251,252],{"class":117},"  },\n",[111,254,256,258,261,263,265],{"class":113,"line":255},9,[111,257,124],{"class":117},[111,259,260],{"class":127},"capabilities",[111,262,131],{"class":117},[111,264,134],{"class":117},[111,266,182],{"class":117},[111,268,270,272,275,277,279,282,284,287,289,292,294,297,299,301,303,306,308,310,312,315,317,319,321,324,326,328,330,333,335],{"class":113,"line":269},10,[111,271,188],{"class":117},[111,273,274],{"class":191},"modules",[111,276,131],{"class":117},[111,278,134],{"class":117},[111,280,281],{"class":117}," [",[111,283,131],{"class":117},[111,285,286],{"class":140},"systems",[111,288,131],{"class":117},[111,290,291],{"class":117},",",[111,293,137],{"class":117},[111,295,296],{"class":140},"members",[111,298,131],{"class":117},[111,300,291],{"class":117},[111,302,137],{"class":117},[111,304,305],{"class":140},"groups",[111,307,131],{"class":117},[111,309,291],{"class":117},[111,311,137],{"class":117},[111,313,314],{"class":140},"taxonomy",[111,316,131],{"class":117},[111,318,291],{"class":117},[111,320,137],{"class":117},[111,322,323],{"class":140},"notes",[111,325,131],{"class":117},[111,327,291],{"class":117},[111,329,137],{"class":117},[111,331,332],{"class":140},"assets",[111,334,131],{"class":117},[111,336,337],{"class":117},"]\n",[111,339,341],{"class":113,"line":340},11,[111,342,252],{"class":117},[111,344,346,348,350,352,354],{"class":113,"line":345},12,[111,347,124],{"class":117},[111,349,286],{"class":127},[111,351,131],{"class":117},[111,353,134],{"class":117},[111,355,356],{"class":117}," [],\n",[111,358,360,362,364,366,368],{"class":113,"line":359},13,[111,361,124],{"class":117},[111,363,296],{"class":127},[111,365,131],{"class":117},[111,367,134],{"class":117},[111,369,356],{"class":117},[111,371,373,375,377,379,381],{"class":113,"line":372},14,[111,374,124],{"class":117},[111,376,305],{"class":127},[111,378,131],{"class":117},[111,380,134],{"class":117},[111,382,356],{"class":117},[111,384,386,388,391,393,395],{"class":113,"line":385},15,[111,387,124],{"class":117},[111,389,390],{"class":127},"front_periods",[111,392,131],{"class":117},[111,394,134],{"class":117},[111,396,356],{"class":117},[111,398,400,402,405,407,409],{"class":113,"line":399},16,[111,401,124],{"class":117},[111,403,404],{"class":127},"front_events",[111,406,131],{"class":117},[111,408,134],{"class":117},[111,410,356],{"class":117},[111,412,414,416,418,420,422],{"class":113,"line":413},17,[111,415,124],{"class":117},[111,417,323],{"class":127},[111,419,131],{"class":117},[111,421,134],{"class":117},[111,423,356],{"class":117},[111,425,427,429,431,433,435],{"class":113,"line":426},18,[111,428,124],{"class":117},[111,430,332],{"class":127},[111,432,131],{"class":117},[111,434,134],{"class":117},[111,436,356],{"class":117},[111,438,440,442,444,446,448],{"class":113,"line":439},19,[111,441,124],{"class":117},[111,443,87],{"class":127},[111,445,131],{"class":117},[111,447,134],{"class":117},[111,449,450],{"class":117}," {},\n",[111,452,454,456,458,460,462],{"class":113,"line":453},20,[111,455,124],{"class":117},[111,457,93],{"class":127},[111,459,131],{"class":117},[111,461,134],{"class":117},[111,463,464],{"class":117}," []\n",[111,466,468],{"class":113,"line":467},21,[111,469,470],{"class":117},"}\n",[21,472,474],{"id":473},"shared-record-fragments","Shared record fragments",[476,477,478,494],"table",{},[479,480,481],"thead",{},[482,483,484,488,491],"tr",{},[485,486,487],"th",{},"Fragment",[485,489,490],{},"Shape",[485,492,493],{},"Purpose",[495,496,497,512,526,541],"tbody",{},[482,498,499,504,509],{},[500,501,502],"td",{},[78,503,80],{},[500,505,506],{},[78,507,508],{},"SourceRef[]",[500,510,511],{},"Keeps original IDs from the source app.",[482,513,514,518,523],{},[500,515,516],{},[78,517,87],{},[500,519,520],{},[78,521,522],{},"Record\u003Cstring, unknown>",[500,524,525],{},"Preserves app-specific fields without forcing a shared schema.",[482,527,528,533,538],{},[500,529,530],{},[78,531,532],{},"privacy",[500,534,535],{},[78,536,537],{},"Privacy",[500,539,540],{},"Carries a common privacy model while preserving source detail.",[482,542,543,547,552],{},[500,544,545],{},[78,546,93],{},[500,548,549],{},[78,550,551],{},"Warning[]",[500,553,554],{},"Reports skipped, degraded, or repaired data.",[21,556,558],{"id":557},"registered-app-ids","Registered app IDs",[14,560,561,562,565],{},"Use these short IDs in ",[78,563,564],{},"SourceRef.app"," and in extension namespaces:",[26,567,568,573,577,582,587,592,597,602,607,612],{},[29,569,570],{},[78,571,572],{},"prism",[29,574,575],{},[78,576,243],{},[29,578,579],{},[78,580,581],{},"simply_plural",[29,583,584],{},[78,585,586],{},"pluralkit",[29,588,589],{},[78,590,591],{},"octocon",[29,593,594],{},[78,595,596],{},"plural_star",[29,598,599],{},[78,600,601],{},"lighthouse",[29,603,604],{},[78,605,606],{},"openselves",[29,608,609],{},[78,610,611],{},"ampersand",[29,613,614],{},[78,615,616],{},"pluralspace",[14,618,619,620,623,624,81],{},"New IDs should be added through the repo. Private namespaces can use reverse-DNS keys such as ",[78,621,622],{},"com.example.app"," inside ",[78,625,87],{},[627,628,629],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":107,"searchDepth":121,"depth":121,"links":631},[632,633,634,635,636],{"id":23,"depth":121,"text":24},{"id":60,"depth":121,"text":61},{"id":96,"depth":121,"text":97},{"id":473,"depth":121,"text":474},{"id":557,"depth":121,"text":558},"md",{},true,"\u002Fformat",{"title":5,"description":16},"format\u002Findex","kLj3P45av6Z8-DXNeGZdZR1vRDhVHxk9PFWuXKh_Xn4",1792272242088]