|
1 FORMAT: 1A |
|
2 |
|
3 # API |
|
4 |
|
5 Documentation de l'API d'édition des protocoles d'annotation. |
|
6 |
|
7 Tous les endpoint de cet API demande une authentification par token. |
|
8 Toutes les requêtes doievnt donc comporter l'en-tête suivant : |
|
9 ```http |
|
10 Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
|
11 ``` |
|
12 |
|
13 # Data Structures |
|
14 |
|
15 ## Protocol (object) |
|
16 |
|
17 - id: `a4977c1f-4752-4aff-b724-eec4033af25c` (string) |
|
18 - owner: `group1` (string) |
|
19 - revision_number: `5` (number) |
|
20 - last_description: `Cras rutrum lacinia pretium. Suspendisse justo est, tincidunt sed tellus a, sodales suscipit risus. Curabitur odio tortor, tincidunt sed est nec, ullamcorper sodales velit.` (string) |
|
21 |
|
22 |
|
23 ## ProtocolRevision (object) |
|
24 |
|
25 - id: `a4977c1f-4752-4aff-b724-eec4033af25c` (string) |
|
26 - owner: `group1` (string) |
|
27 - revision: `1` |
|
28 - description: `Cras rutrum lacinia pretium. Suspendisse justo est, tincidunt sed tellus a, sodales suscipit risus. Curabitur odio tortor, tincidunt sed est nec, ullamcorper sodales velit.` (string) |
|
29 |
|
30 ## MetacategoryRevision (object) |
|
31 |
|
32 - id: `e5712a76-857a-4769-b27e-a3ac3fb38b4d` (string) |
|
33 - revision: `2` (number) |
|
34 - base: `ef14bcce-52ac-44ba-a7d1-f1441bab94de` (string) |
|
35 - name: `référence` (string) |
|
36 - description: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.` (string) |
|
37 - color: `#2cbfff` (string) |
|
38 - has_comment: `false` (boolean) |
|
39 |
|
40 ## ProtocolRevisionFull (object) |
|
41 |
|
42 - Include MetacategoryRevision |
|
43 - metacategories (array[MetacategoryRevision]) |
|
44 |
|
45 |
|
46 ## Collection de protocoles [/protocol/{?page,page_size}] |
|
47 |
|
48 ### Voir la liste des protocoles [GET] |
|
49 |
|
50 Liste les protocoles pour une application. L'application est déterminée par le token passé comme authentification. |
|
51 |
|
52 + Parameters |
|
53 |
|
54 + page: `3` (number, optional) - Get the page. |
|
55 + Default: `1` |
|
56 + page_size: `15` (number, optional) - Set number of protocol per page |
|
57 + Default: `10` |
|
58 |
|
59 |
|
60 + Request |
|
61 + Headers |
|
62 |
|
63 Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
|
64 |
|
65 + Response 200 (application/json) |
|
66 |
|
67 + Attributes |
|
68 - count: `15` (number) |
|
69 - next: `http://scatedit.episteme.fr/api/protocol/?page=2` |
|
70 - prev: `null` |
|
71 - `results` (array[Protocol], fixed-type) |
|
72 |
|
73 ### Créer un nouveau protocole [POST] |
|
74 |
|
75 Crée un nouveau protocole d'annotation dont la liste des méta-catégorie est la liste des méta-catégories par défaut pour l'application. |
|
76 |
|
77 Le numéro de révision retourné sera toujours `1`. |
|
78 |
|
79 + Request (application/json) |
|
80 |
|
81 + Headers |
|
82 |
|
83 Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
|
84 |
|
85 + Attributes |
|
86 - owner: `group1` (string) |
|
87 - description: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.` (string) |
|
88 |
|
89 |
|
90 + Response 201 (application/json) |
|
91 |
|
92 + Attributes (ProtocolRevisionFull) |
|
93 |
|
94 ## Révisions d'un protocole. [/protocol/{id}/{?page,page_size}] |
|
95 |
|
96 ### Voir la liste des revision pour un protocole [GET] |
|
97 |
|
98 Liste les revisions d'un protocole pour une application. |
|
99 |
|
100 + Parameters |
|
101 |
|
102 + id: `a4977c1f-4752-4aff-b724-eec4033af25c` - Identifiant d'un protocole |
|
103 + page: `3` (number, optional) - Get the page. |
|
104 + Default: `1` |
|
105 + page_size: `15` (number, optional) - Set number of protocol per page |
|
106 + Default: `10` |
|
107 |
|
108 + Request |
|
109 + Headers |
|
110 |
|
111 Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
|
112 |
|
113 |
|
114 + Response 200 (application/json) |
|
115 |
|
116 + Attributes |
|
117 - count: 15 |
|
118 - next: http://scatedit.episteme.fr/api/protocol/a4977c1f-4752-4aff-b724-eec4033af25c?page=2 |
|
119 - prev: null |
|
120 - results (array[ProtocolRevision]) |
|
121 |
|
122 + Response 403 |
|
123 |
|
124 Retournée si l'utilisateur (application) n'est pas le propriétaire du protocole. |
|
125 |
|
126 + Attributes (object) |
|
127 - error : `Application is not protocol owner.` |
|
128 |
|
129 + Response 404 |
|
130 |
|
131 Retournée si l'identifiant ne coreespond à aucun protocole. |
|
132 |
|
133 + Attributes (object) |
|
134 - error : `Object not found.` |
|
135 |
|
136 |
|
137 ### Créer une nouvelle révision du protocole [POST] |
|
138 |
|
139 Permet de créer une nouvelle révision du protocole. |
|
140 |
|
141 L'attribut `revision` doit être le dernier numéro de révision du protocole. |
|
142 |
|
143 La liste des métacatégorie doit être complête et remplacera la liste existante sur la révision courante. |
|
144 Tous les attributs d'une metacategories doivent être fournis à part `id`, `revision` et `base`. |
|
145 Les rêgles pour ces derniers sont les suivantes |
|
146 |
|
147 - Si `id` est présent: l'attribut `revision` doit être fourni et correspondre à la dernière valeur pour cette méta-catégorie. Si un des attributs a été modifé, une nouvelle révision sera créee. |
|
148 - Si `id` n'est pas présent: 2 possibilités: |
|
149 - `base` est présent: Dans ce cas une nouvelle famille de méta-catégorie est créé prenant pour base la métacatégorie dont l'ID est passé comme base. Si les attributs ne sont pas les mêmes, une nouvelle révision sera automatiquement créée, sinon, les attributs de la méta-catégorie de base sont copié dans une révision de base. |
|
150 - `base` n'est pas présent: une nouvelle métacatégorie est créée ainsi qu'une nouvelle famille de méta-catégorie basée dessus. |
|
151 |
|
152 Dans tous les cas, le retours est une sérialisation complête du protocole d'annotation, avec les nouveaux `id` et `revision` pour les méta-catégories créées ou mis à jour. |
|
153 |
|
154 + Parameters |
|
155 |
|
156 + id: `a4977c1f-4752-4aff-b724-eec4033af25c` - Identifiant d'un protocole |
|
157 |
|
158 + Request (application/json) |
|
159 |
|
160 + Headers |
|
161 |
|
162 Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b |
|
163 |
|
164 + Attributes |
|
165 - Include ProtocolRevision |
|
166 - metacategories (array[MetacategoryRevision]) |
|
167 |
|
168 |
|
169 + Response 201 (application/json) |
|
170 |
|
171 + Attributes (ProtocolRevisionFull) |
|
172 |
|
173 + Response 403 |
|
174 |
|
175 Retournée si l'utilisateur (application) n'est pas le propriétaire du protocole. |
|
176 |
|
177 + Attributes (object) |
|
178 - error : `Application is not protocol owner.` |
|
179 |
|
180 + Response 409 |
|
181 |
|
182 Retournée si la valeur de l'attribut `revision` n'est pas le numéro de version courant du protocole, ou bien d'une des méta-catégories. |
|
183 |
|
184 + Attributes (object) |
|
185 - error : `Bad revision number.` |
|
186 |
|
187 |
|
188 ## Détail d'un protocole [/protocol/{id}/{revision}/] |
|
189 |
|
190 ### Voir une revision d'un protocole [GET] |
|
191 |
|
192 Permet d'obtenir la représentation complète d'une révision de protocole. |
|
193 |
|
194 + Parameters |
|
195 |
|
196 + id: `a4977c1f-4752-4aff-b724-eec4033af25c` - Identifiant d'un protocole |
|
197 + revision: `2` (number) - Numéro de la révision |
|
198 |
|
199 + Response 200 (application/json) |
|
200 |
|
201 + Attributes (ProtocolRevisionFull) |
|
202 |
|
203 + Response 403 |
|
204 |
|
205 Retournée si l'utilisateur (application) n'est pas le propriétaire du protocole. |
|
206 |
|
207 + Attributes (object) |
|
208 - error : `Application is not protocol owner.` |
|
209 |
|
210 + Response 404 |
|
211 |
|
212 Retournée si l'un des paramêtre est érroné et qu'aucun objet ne correspond. |
|
213 |
|
214 + Attributes (object) |
|
215 - error : `Object not found.` |
|
216 |
|
217 |
|
218 |
|
219 ## Détail méta-catégorie [/protocol/{protocol_id}/{revision}/metacategory/{metacategory_id}/] |
|
220 |
|
221 ### Voir le détail d'une méta-catégorie [GET] |
|
222 |
|
223 Permet d'obtenir la représentation d'une révision de métacatégorie. |
|
224 |
|
225 + Parameters |
|
226 |
|
227 + protocol_id: `a4977c1f-4752-4aff-b724-eec4033af25c` - Identifiant d'un protocole |
|
228 + revision: `2` (number) - Numéro de la révision |
|
229 + metacategory_id: `e5712a76-857a-4769-b27e-a3ac3fb38b4d` - Identifiant d'une méta-categorie |
|
230 |
|
231 + Response 200 (application/json) |
|
232 |
|
233 + Attributes (MetacategoryRevision) |
|
234 |
|
235 + Response 403 |
|
236 |
|
237 Retournée si l'utilisateur (application) n'est pas le propriétaire du protocole. |
|
238 |
|
239 + Attributes (object) |
|
240 - error : `Application is not protocol owner.` |
|
241 |
|
242 + Response 404 |
|
243 |
|
244 Retournée si l'un des paramêtre est érroné et qu'aucun objet ne correspond. |
|
245 |
|
246 + Attributes (object) |
|
247 - error : `Object not found.` |
|
248 |