Commit a5c44150 authored by natct's avatar natct
Browse files

Merge branch 'structure' into 'main'

Add Structure description

See merge request friendlyforgeformat/f3-publisher!4
parent 35b1c1b3
......@@ -3,33 +3,42 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to pyfff's documentation!
=================================
Welcome to F3 documentation!
============================
Introduction
------------
Documentation of the json schemas used as Forge Friends Format.
Structure
----------
.. toctree::
:maxdepth: 1
structure
Schemas
-------
.. toctree::
:maxdepth: 2
:maxdepth: 1
schemas/index
Repositories
------------
* https://lab.forgefriends.org/friendlyforgeformat/pyfff
* https://lab.forgefriends.org/friendlyforgeformat/gofff
* https://lab.forgefriends.org/friendlyforgeformat/f3-publisher
* https://lab.forgefriends.org/friendlyforgeformat/gof3
* https://gitea.hostea.org/Hostea
Resources
---------
* `Forge Federation Forum <https://app.element.io/#/room/#general-forgefed:matrix.batsense.net>`_
* This documentation is inspired by https://data.tricoteuses.fr/doc/assemblee/dossier.html
* http://json-schema.org/
* https://forum.forgefriends.org/
## Hierarchy
A the root of the forge, we find users. Each user has several projects which contains repositories, issues, pull requests, milestones, releases, topics and labels.
> Note: a *repository* is a git repository and a *project* contains one or several git repositories.
For example:
```
user/
...
20.json
20/project/
1.json
1/issue/
3.json
3/comment/
7.json
7/attachment/
20.json
20/content
1/pull_request/
6.json
1/release/
1.json
1/asset/
10.json
10/content
1/label/
2.json
3.json
1/milestone/
8.json
9.json
1/topic/
1.json
3.json
1/repository/
1.json (name="", vcs="git")
1/ (bare git repository)
2.json (name=".wiki", vcs="git")
2/ (bare git repository)
30.json
...
...
```
At each level of the hierarchy we have a json file (named after the `index` property: `index`.json) to describe the resource. There is then a folder named after the `index` property which contains a representation of all its sub-hierarchy.
A each level, folder names correspond to the json files containing the schema; this schema describes the structure of each json files in this folder. In the example above, `user/20/project/1/issue/3.json` is describe by the schema [issue.json](https://lab.forgefriends.org/friendlyforgeformat/f3-schemas/-/blob/master/issue.json).
Reactions (emojis) are described by the [reaction.json](https://lab.forgefriends.org/friendlyforgeformat/f3-schemas/-/blob/master/reaction.json) file, but it would be space consuming to create a json file for each reaction in a comment. For this reason, reactions are directly included to the json file of the comment. Keeping this in mind, the same decision is applied for review comments or labels.
## Attachements
> What is an attachement?
It's a file with arbitrary content (iamge, tarball, etc.), which is linked to another thing, for example, a comment or a release. Each attachement has a unique identifier (`index` property in json files). Attachements are stored in a folder named with this id (`<id>/content`). The json file describing an attachement is stored in a file named `<id>.json`. The `content_type` property of the json file will precisely indicate the *
type* of the resource.
## Repository
A repository is, as you might expect, the code but it also comes with a json file that describes each sub folders. In the previous example, we can see that our project has two git repositories, one for the code (`user/20/project/1/repository/1.json`) and another for the wiki (`user/20/project/1/repository/2.json`).
......@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Index &mdash; P3 Publisher documentation</title>
<title>Index &mdash; F3 Publisher documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
......@@ -24,7 +24,7 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> P3 Publisher
<a href="index.html" class="icon icon-home"> F3 Publisher
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
......@@ -35,6 +35,11 @@
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="structure.html">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#repository">Repository</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html">Comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#issue">Issue</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#label">Label</a></li>
......@@ -56,7 +61,7 @@
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">P3 Publisher</a>
<a href="index.html">F3 Publisher</a>
</nav>
<div class="wy-nav-content">
......
......@@ -4,7 +4,7 @@
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Welcome to pyfff’s documentation! &mdash; P3 Publisher documentation</title>
<title>Welcome to F3 documentation! &mdash; F3 Publisher documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
......@@ -18,7 +18,7 @@
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Comment" href="schemas/index.html" />
<link rel="next" title="Hierarchy" href="structure.html" />
</head>
<body class="wy-body-for-nav">
......@@ -26,7 +26,7 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="#" class="icon icon-home"> P3 Publisher
<a href="#" class="icon icon-home"> F3 Publisher
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
......@@ -37,6 +37,11 @@
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="structure.html">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#repository">Repository</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html">Comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#issue">Issue</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#label">Label</a></li>
......@@ -58,7 +63,7 @@
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="#">P3 Publisher</a>
<a href="#">F3 Publisher</a>
</nav>
<div class="wy-nav-content">
......@@ -66,7 +71,7 @@
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="#" class="icon icon-home"></a> &raquo;</li>
<li>Welcome to pyfff’s documentation!</li>
<li>Welcome to F3 documentation!</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
......@@ -75,12 +80,22 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="welcome-to-pyfff-s-documentation">
<h1>Welcome to pyfff’s documentation!<a class="headerlink" href="#welcome-to-pyfff-s-documentation" title="Permalink to this headline"></a></h1>
<section id="welcome-to-f3-documentation">
<h1>Welcome to F3 documentation!<a class="headerlink" href="#welcome-to-f3-documentation" title="Permalink to this headline"></a></h1>
<section id="introduction">
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h2>
<p>Documentation of the json schemas used as Forge Friends Format.</p>
</section>
<section id="structure">
<h2>Structure<a class="headerlink" href="#structure" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="structure.html">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#repository">Repository</a></li>
</ul>
</div>
</section>
<section id="schemas">
<h2>Schemas<a class="headerlink" href="#schemas" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
......@@ -104,14 +119,15 @@
<section id="repositories">
<h2>Repositories<a class="headerlink" href="#repositories" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/pyfff">https://lab.forgefriends.org/friendlyforgeformat/pyfff</a></p></li>
<li><p><a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/gofff">https://lab.forgefriends.org/friendlyforgeformat/gofff</a></p></li>
<li><p><a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/f3-publisher">https://lab.forgefriends.org/friendlyforgeformat/f3-publisher</a></p></li>
<li><p><a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/gof3">https://lab.forgefriends.org/friendlyforgeformat/gof3</a></p></li>
<li><p><a class="reference external" href="https://gitea.hostea.org/Hostea">https://gitea.hostea.org/Hostea</a></p></li>
</ul>
</section>
<section id="resources">
<h2>Resources<a class="headerlink" href="#resources" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://app.element.io/#/room/#general-forgefed:matrix.batsense.net">Forge Federation Forum</a></p></li>
<li><p>This documentation is inspired by <a class="reference external" href="https://data.tricoteuses.fr/doc/assemblee/dossier.html">https://data.tricoteuses.fr/doc/assemblee/dossier.html</a></p></li>
<li><p><a class="reference external" href="http://json-schema.org/">http://json-schema.org/</a></p></li>
<li><p><a class="reference external" href="https://forum.forgefriends.org/">https://forum.forgefriends.org/</a></p></li>
......@@ -123,7 +139,7 @@
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="schemas/index.html" class="btn btn-neutral float-right" title="Comment" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="structure.html" class="btn btn-neutral float-right" title="Hierarchy" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
......
No preview for this file type
......@@ -4,7 +4,7 @@
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Comment &mdash; P3 Publisher documentation</title>
<title>Comment &mdash; F3 Publisher documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
......@@ -18,7 +18,7 @@
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="prev" title="Welcome to pyfff’s documentation!" href="../index.html" />
<link rel="prev" title="Hierarchy" href="../structure.html" />
</head>
<body class="wy-body-for-nav">
......@@ -26,7 +26,7 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> P3 Publisher
<a href="../index.html" class="icon icon-home"> F3 Publisher
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
......@@ -36,7 +36,12 @@
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../structure.html">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../structure.html#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../structure.html#repository">Repository</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="#issue">Issue</a></li>
<li class="toctree-l1"><a class="reference internal" href="#label">Label</a></li>
......@@ -58,7 +63,7 @@
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">P3 Publisher</a>
<a href="../index.html">F3 Publisher</a>
</nav>
<div class="wy-nav-content">
......@@ -1669,7 +1674,7 @@
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../index.html" class="btn btn-neutral float-left" title="Welcome to pyfff’s documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../structure.html" class="btn btn-neutral float-left" title="Hierarchy" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
......
......@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Search &mdash; P3 Publisher documentation</title>
<title>Search &mdash; F3 Publisher documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
......@@ -27,7 +27,7 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> P3 Publisher
<a href="index.html" class="icon icon-home"> F3 Publisher
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">
......@@ -38,6 +38,11 @@
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="structure.html">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="structure.html#repository">Repository</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html">Comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#issue">Issue</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#label">Label</a></li>
......@@ -59,7 +64,7 @@
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">P3 Publisher</a>
<a href="index.html">F3 Publisher</a>
</nav>
<div class="wy-nav-content">
......
Search.setIndex({docnames:["index","schemas/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","schemas/index.rst"],objects:{},objnames:{},objtypes:{},terms:{"1":1,"2":1,"boolean":1,"byte":1,"default":1,"enum":1,"long":1,"new":1,"null":1,"public":1,"short":1,"true":1,A:1,Not:1,The:1,activ:1,add:1,addit:1,additionalproperti:1,after:1,alreadi:1,an:1,ani:1,anoth:1,anyof:1,applic:1,approv:1,ar:1,arrai:1,assemble:0,asset:0,assign:1,assigne:1,associ:1,author:1,base:1,begin:1,being:1,belong:1,below:1,bodi:1,branch:1,can:1,categori:1,chang:1,changes_request:1,clone:1,clone_url:1,close:1,code:1,color:1,com:1,comment:0,commit:0,commit_id:1,commitish:1,constitut:1,contain:1,content:1,content_typ:1,context:1,continu:1,count:1,cover:1,creat:1,created_at:1,creation:1,data:0,date:1,deadlin:1,default_branch:1,describ:1,descript:1,determin:1,diff:1,diff_hunk:1,displai:1,doc:0,dossier:0,down:1,download:1,download_count:1,download_url:1,draft:1,either:1,email:1,equal:1,etc:1,exampl:1,exist:1,fals:1,file:1,first:1,forg:[0,1],forgefriend:0,format:[0,1],forum:0,found:1,fr:0,friend:0,friendlyforgeformat:0,from:1,futur:1,git:1,gitea:[0,1],gitlab:1,given:1,gofff:0,head:1,header:1,homepag:1,hostea:0,html:0,http:[0,1],hunk:1,id:1,identif:1,identifi:1,in_reply_to:1,includ:1,increas:1,index:1,insert:1,inspir:0,is_lock:1,is_mirror:1,is_priv:1,issu:0,issue_index:1,item:1,json:[0,1],just:1,lab:0,label:0,last:1,latest:1,line:1,list:1,locat:1,lock:1,mai:1,merg:1,merged_commit_sha:1,merged_tim:1,messag:1,mileston:0,mirror:1,modifi:1,multilin:1,name:1,necessit:1,need:1,next:1,number:1,object:1,offici:1,onli:1,open:1,org:0,organ:1,original_url:1,otherwis:1,outdat:1,overdu:1,owner:1,owner_nam:1,patch:1,patch_url:1,path:1,pend:1,posit:1,poster_email:1,poster_id:1,poster_nam:1,pre:1,prereleas:1,privileg:1,project:0,properti:1,propos:1,publish:1,publisher_email:1,publisher_id:1,publisher_nam:1,pull:1,pullrequest:0,pullrequestbranch:1,reach:1,reaction:0,ref:1,refer:0,rel:1,releas:0,releaseasset:1,render:1,repli:1,repo_nam:1,repositori:1,represent:1,request:1,requir:1,resid:1,retriev:1,review:0,reviewcom:1,reviewer_id:1,reviewer_nam:1,see:1,set:1,sha:1,size:1,so:1,softwar:1,specif:1,specifi:1,state:1,string:1,subsequ:1,tag:1,tag_nam:1,target:1,target_commitish:1,text:1,thi:0,threshold:1,through:1,time:1,titl:1,topic:0,tree_path:1,tricoteus:0,type:1,uniqu:1,until:1,unus:1,updat:1,updated_at:1,url:1,us:[0,1],user:1,user_id:1,user_nam:1,valu:1,visibl:1,wa:1,want:1,when:1,where:1,which:1,whitespac:1,who:1,within:1,you:1,your:1,zip:1},titles:["Welcome to pyfff\u2019s documentation!","Comment"],titleterms:{asset:1,comment:1,commit:1,document:0,introduct:0,issu:1,label:1,mileston:1,project:1,pullrequest:1,pyfff:0,reaction:1,refer:1,releas:1,repositori:0,resourc:0,review:1,s:0,schema:0,topic:1,welcom:0}})
\ No newline at end of file
Search.setIndex({docnames:["index","schemas/index","structure"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","schemas/index.rst","structure.md"],objects:{},objnames:{},objtypes:{},terms:{"1":[1,2],"10":2,"2":[1,2],"20":2,"3":2,"30":2,"6":2,"7":2,"8":2,"9":2,"boolean":1,"byte":1,"default":1,"enum":1,"long":1,"new":1,"null":1,"public":1,"short":1,"true":1,A:[1,2],At:2,For:2,In:2,It:2,Not:1,The:[1,2],There:2,abov:2,activ:1,add:1,addit:1,additionalproperti:1,after:[1,2],all:2,alreadi:1,also:2,an:[1,2],ani:1,anoth:[1,2],anyof:1,appli:2,applic:1,approv:1,ar:[1,2],arbitrari:2,arrai:1,assemble:0,asset:[0,2],assign:1,assigne:1,associ:1,attach:0,author:1,bare:2,base:1,begin:1,being:1,belong:1,below:1,bodi:1,branch:1,can:[1,2],categori:1,chang:1,changes_request:1,clone:1,clone_url:1,close:1,code:[1,2],color:1,com:1,come:2,comment:[0,2],commit:0,commit_id:1,commitish:1,constitut:1,consum:2,contain:[1,2],content:[1,2],content_typ:[1,2],context:1,continu:1,correspond:2,count:1,cover:1,creat:[1,2],created_at:1,creation:1,data:0,date:1,deadlin:1,decis:2,default_branch:1,describ:[1,2],descript:1,determin:1,diff:1,diff_hunk:1,directli:2,displai:1,doc:0,dossier:0,down:1,download:1,download_count:1,download_url:1,draft:1,each:2,either:1,email:1,emoji:2,equal:1,etc:[1,2],exampl:[1,2],exist:1,expect:2,fals:1,feder:0,file:[1,2],find:2,first:1,folder:2,forg:[0,1,2],forgefriend:0,format:[0,1],forum:0,found:1,fr:0,friend:0,friendlyforgeformat:0,from:1,futur:1,git:[1,2],gitea:[0,1],gitlab:1,given:1,gof3:0,ha:2,have:2,head:1,header:1,hierarchi:0,homepag:1,hostea:0,html:0,http:[0,1],hunk:1,iamg:2,id:[1,2],identif:1,identifi:[1,2],in_reply_to:1,includ:[1,2],increas:1,index:[1,2],indic:2,insert:1,inspir:0,is_lock:1,is_mirror:1,is_priv:1,issu:[0,2],issue_index:1,item:1,its:2,json:[0,1,2],just:1,keep:2,lab:0,label:[0,2],last:1,latest:1,level:2,line:1,link:2,list:1,locat:1,lock:1,mai:1,merg:1,merged_commit_sha:1,merged_tim:1,messag:1,might:2,mileston:[0,2],mind:2,mirror:1,modifi:1,multilin:1,name:[1,2],necessit:1,need:1,next:1,note:2,number:1,object:1,offici:1,one:2,onli:1,open:1,org:0,organ:1,original_url:1,otherwis:1,our:2,outdat:1,overdu:1,owner:1,owner_nam:1,patch:1,patch_url:1,path:1,pend:1,posit:1,poster_email:1,poster_id:1,poster_nam:1,pre:1,precis:2,prereleas:1,previou:2,privileg:1,project:[0,2],properti:[1,2],propos:1,publish:[0,1],publisher_email:1,publisher_id:1,publisher_nam:1,pull:[1,2],pull_request:2,pullrequest:0,pullrequestbranch:1,reach:1,reaction:[0,2],reason:2,ref:1,refer:0,rel:1,releas:[0,2],releaseasset:1,render:1,repli:1,repo_nam:1,repositori:1,represent:[1,2],request:[1,2],requir:1,resid:1,resourc:2,retriev:1,review:[0,2],reviewcom:1,reviewer_id:1,reviewer_nam:1,root:2,s:2,same:2,schema:2,see:[1,2],set:1,sever:2,sha:1,size:1,so:1,softwar:1,space:2,specif:1,specifi:1,state:1,store:2,string:1,structur:2,sub:2,subsequ:1,tag:1,tag_nam:1,tarbal:2,target:1,target_commitish:1,text:1,thi:[0,2],thing:2,threshold:1,through:1,time:1,titl:1,topic:[0,2],tree_path:1,tricoteus:0,two:2,type:[1,2],uniqu:[1,2],until:1,unus:1,updat:1,updated_at:1,url:1,us:[0,1],user:[1,2],user_id:1,user_nam:1,valu:1,vc:2,visibl:1,wa:1,want:1,we:2,what:2,when:1,where:1,which:[1,2],whitespac:1,who:1,wiki:2,within:1,would:2,you:[1,2],your:1,zip:1},titles:["Welcome to F3 documentation!","Comment","Hierarchy"],titleterms:{asset:1,attach:2,comment:1,commit:1,document:0,f3:0,hierarchi:2,introduct:0,issu:1,label:1,mileston:1,project:1,pullrequest:1,reaction:1,refer:1,releas:1,repositori:[0,2],resourc:0,review:1,schema:0,structur:0,topic:1,welcom:0}})
\ No newline at end of file
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hierarchy &mdash; F3 Publisher documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Comment" href="schemas/index.html" />
<link rel="prev" title="Welcome to F3 documentation!" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> F3 Publisher
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Hierarchy</a></li>
<li class="toctree-l1"><a class="reference internal" href="#attachements">Attachements</a></li>
<li class="toctree-l1"><a class="reference internal" href="#repository">Repository</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html">Comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#issue">Issue</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#label">Label</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#milestone">Milestone</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#project">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#pullrequest">PullRequest</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#pullrequest-reference-to-a-commit">PullRequest reference to a commit</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#reaction">Reaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#release">Release</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#release-asset">Release asset</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#review">Review</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#review-comment">Review comment</a></li>
<li class="toctree-l1"><a class="reference internal" href="schemas/index.html#topic">Topic</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">F3 Publisher</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Hierarchy</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="hierarchy">
<h1>Hierarchy<a class="headerlink" href="#hierarchy" title="Permalink to this headline"></a></h1>
<p>A the root of the forge, we find users. Each user has several projects which contains repositories, issues, pull requests, milestones, releases, topics and labels.</p>
<blockquote>
<div><p>Note: a <em>repository</em> is a git repository and a <em>project</em> contains one or several git repositories.</p>
</div></blockquote>
<p>For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">user</span><span class="o">/</span>
<span class="o">...</span>
<span class="mf">20.</span><span class="n">json</span>
<span class="mi">20</span><span class="o">/</span><span class="n">project</span><span class="o">/</span>
<span class="mf">1.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">issue</span><span class="o">/</span>
<span class="mf">3.</span><span class="n">json</span>
<span class="mi">3</span><span class="o">/</span><span class="n">comment</span><span class="o">/</span>
<span class="mf">7.</span><span class="n">json</span>
<span class="mi">7</span><span class="o">/</span><span class="n">attachment</span><span class="o">/</span>
<span class="mf">20.</span><span class="n">json</span>
<span class="mi">20</span><span class="o">/</span><span class="n">content</span>
<span class="mi">1</span><span class="o">/</span><span class="n">pull_request</span><span class="o">/</span>
<span class="mf">6.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">release</span><span class="o">/</span>
<span class="mf">1.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">asset</span><span class="o">/</span>
<span class="mf">10.</span><span class="n">json</span>
<span class="mi">10</span><span class="o">/</span><span class="n">content</span>
<span class="mi">1</span><span class="o">/</span><span class="n">label</span><span class="o">/</span>
<span class="mf">2.</span><span class="n">json</span>
<span class="mf">3.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">milestone</span><span class="o">/</span>
<span class="mf">8.</span><span class="n">json</span>
<span class="mf">9.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">topic</span><span class="o">/</span>
<span class="mf">1.</span><span class="n">json</span>
<span class="mf">3.</span><span class="n">json</span>
<span class="mi">1</span><span class="o">/</span><span class="n">repository</span><span class="o">/</span>
<span class="mf">1.</span><span class="n">json</span> <span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">vcs</span><span class="o">=</span><span class="s2">&quot;git&quot;</span><span class="p">)</span>
<span class="mi">1</span><span class="o">/</span> <span class="p">(</span><span class="n">bare</span> <span class="n">git</span> <span class="n">repository</span><span class="p">)</span>
<span class="mf">2.</span><span class="n">json</span> <span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;.wiki&quot;</span><span class="p">,</span> <span class="n">vcs</span><span class="o">=</span><span class="s2">&quot;git&quot;</span><span class="p">)</span>
<span class="mi">2</span><span class="o">/</span> <span class="p">(</span><span class="n">bare</span> <span class="n">git</span> <span class="n">repository</span><span class="p">)</span>
<span class="mf">30.</span><span class="n">json</span>
<span class="o">...</span>
<span class="o">...</span>
</pre></div>
</div>
<p>At each level of the hierarchy we have a json file (named after the <code class="docutils literal notranslate"><span class="pre">index</span></code> property: <code class="docutils literal notranslate"><span class="pre">index</span></code>.json) to describe the resource. There is then a folder named after the <code class="docutils literal notranslate"><span class="pre">index</span></code> property which contains a representation of all its sub-hierarchy.</p>
<p>A each level, folder names correspond to the json files containing the schema; this schema describes the structure of each json files in this folder. In the example above, <code class="docutils literal notranslate"><span class="pre">user/20/project/1/issue/3.json</span></code> is describe by the schema <a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/f3-schemas/-/blob/master/issue.json">issue.json</a>.</p>
<p>Reactions (emojis) are described by the <a class="reference external" href="https://lab.forgefriends.org/friendlyforgeformat/f3-schemas/-/blob/master/reaction.json">reaction.json</a> file, but it would be space consuming to create a json file for each reaction in a comment. For this reason, reactions are directly included to the json file of the comment. Keeping this in mind, the same decision is applied for review comments or labels.</p>
</section>
<section id="attachements">
<h1>Attachements<a class="headerlink" href="#attachements" title="Permalink to this headline"></a></h1>
<blockquote>
<div><p>What is an attachement?</p>
</div></blockquote>
<p>It’s a file with arbitrary content (iamge, tarball, etc.), which is linked to another thing, for example, a comment or a release. Each attachement has a unique identifier (<code class="docutils literal notranslate"><span class="pre">index</span></code> property in json files). Attachements are stored in a folder named with this id (<code class="docutils literal notranslate"><span class="pre">&lt;id&gt;/content</span></code>). The json file describing an attachement is stored in a file named <code class="docutils literal notranslate"><span class="pre">&lt;id&gt;.json</span></code>. The <code class="docutils literal notranslate"><span class="pre">content_type</span></code> property of the json file will precisely indicate the *
type* of the resource.</p>
</section>
<section id="repository">
<h1>Repository<a class="headerlink" href="#repository" title="Permalink to this headline"></a></h1>
<p>A repository is, as you might expect, the code but it also comes with a json file that describes each sub folders. In the previous example, we can see that our project has two git repositories, one for the code (<code class="docutils literal notranslate"><span class="pre">user/20/project/1/repository/1.json</span></code>) and another for the wiki (<code class="docutils literal notranslate"><span class="pre">user/20/project/1/repository/2.json</span></code>).</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Welcome to F3 documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="schemas/index.html" class="btn btn-neutral float-right" title="Comment" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2022, Loïc Dachary.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment