API
Documentation de l’API d’édition des protocoles d’annotation.
+Tous les endpoint de cet API demande une authentification par token. +Toutes les requêtes doievnt donc comporter l’en-tête suivant :
+Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
+Resource Group ¶
Collection de protocoles ¶
Voir la liste des protocolesGET/protocol/{?page,page_size}
Liste les protocoles pour une application. L’application est déterminée par le token passé comme authentification.
+Example URI
- page
number(optional) Default: 1 Example: 3Get the page.
+- page_size
number(optional) Default: 10 Example: 15Set number of protocol per page
+
Headers
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b200Headers
Content-Type: application/jsonBody
{
+ "count": 15,
+ "next": "http://scatedit.episteme.fr/api/protocol/?page=2",
+ "prev": "null",
+ "results": [
+ {
+ "id": "a4977c1f-4752-4aff-b724-eec4033af25c",
+ "owner": "group1",
+ "revision_number": 5,
+ "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."
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "number"
+ },
+ "next": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "revision_number": {
+ "type": "number"
+ },
+ "last_description": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+}Créer un nouveau protocolePOST/protocol/
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.
+Le numéro de révision retourné sera toujours 1.
Example URI
Headers
Content-Type: application/json
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4bBody
{
+ "owner": "group1",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam."
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "owner": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ }
+}201Headers
Content-Type: application/jsonBody
{
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false,
+ "metacategories": [
+ {
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "number"
+ },
+ "base": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "color": {
+ "type": "string"
+ },
+ "has_comment": {
+ "type": "boolean"
+ },
+ "metacategories": {
+ "type": "array"
+ }
+ }
+}Révisions d'un protocole. ¶
Voir la liste des revision pour un protocoleGET/protocol/{id}/{?page,page_size}
Liste les revisions d’un protocole pour une application.
+Example URI
- id
string(required) Example: a4977c1f-4752-4aff-b724-eec4033af25cIdentifiant d’un protocole
+- page
number(optional) Default: 1 Example: 3Get the page.
+- page_size
number(optional) Default: 10 Example: 15Set number of protocol per page
+
Headers
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b200Headers
Content-Type: application/jsonBody
{
+ "count": "15",
+ "next": "http://scatedit.episteme.fr/api/protocol/a4977c1f",
+ "prev": "null",
+ "results": [
+ {
+ "id": "a4977c1f-4752-4aff-b724-eec4033af25c",
+ "owner": "group1",
+ "revision": "1",
+ "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."
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "string"
+ },
+ "next": {
+ "type": "string",
+ "description": "4752-4aff-b724-eec4033af25c?page=2"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "results": {
+ "type": "array"
+ }
+ }
+}403Retournée si l’utilisateur (application) n’est pas le propriétaire du protocole.
+Body
{
+ "error": "Application is not protocol owner."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}404Retournée si l’identifiant ne coreespond à aucun protocole.
+Body
{
+ "error": "Object not found."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}Créer une nouvelle révision du protocolePOST/protocol/{id}/
Permet de créer une nouvelle révision du protocole.
+L’attribut revision doit être le dernier numéro de révision du protocole.
La liste des métacatégorie doit être complête et remplacera la liste existante sur la révision courante.
+Tous les attributs d’une metacategories doivent être fournis à part id, revision et base.
+Les rêgles pour ces derniers sont les suivantes
-
+
-
+
Si
+idest présent: l’attributrevisiondoit ê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.
+ -
+
Si
+idn’est pas présent: 2 possibilités:-
+
baseest 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.
+basen’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.
+
+
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.
Example URI
- id
string(required) Example: a4977c1f-4752-4aff-b724-eec4033af25cIdentifiant d’un protocole
+
Headers
Content-Type: application/json
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4bBody
{
+ "id": "a4977c1f-4752-4aff-b724-eec4033af25c",
+ "owner": "group1",
+ "revision": "1",
+ "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.",
+ "metacategories": [
+ {
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "metacategories": {
+ "type": "array"
+ }
+ }
+}201Headers
Content-Type: application/jsonBody
{
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false,
+ "metacategories": [
+ {
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "number"
+ },
+ "base": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "color": {
+ "type": "string"
+ },
+ "has_comment": {
+ "type": "boolean"
+ },
+ "metacategories": {
+ "type": "array"
+ }
+ }
+}403Retournée si l’utilisateur (application) n’est pas le propriétaire du protocole.
+Body
{
+ "error": "Application is not protocol owner."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}409Retourné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.
Body
{
+ "error": "Bad revision number."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}Détail d'un protocole ¶
Voir une revision d'un protocoleGET/protocol/{id}/{revision}/
Permet d’obtenir la représentation complète d’une révision de protocole.
+Example URI
- id
string(required) Example: a4977c1f-4752-4aff-b724-eec4033af25cIdentifiant d’un protocole
+- revision
number(required) Example: 2Numéro de la révision
+
200Headers
Content-Type: application/jsonBody
{
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false,
+ "metacategories": [
+ {
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false
+ }
+ ]
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "number"
+ },
+ "base": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "color": {
+ "type": "string"
+ },
+ "has_comment": {
+ "type": "boolean"
+ },
+ "metacategories": {
+ "type": "array"
+ }
+ }
+}403Retournée si l’utilisateur (application) n’est pas le propriétaire du protocole.
+Body
{
+ "error": "Application is not protocol owner."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}404Retournée si l’un des paramêtre est érroné et qu’aucun objet ne correspond.
+Body
{
+ "error": "Object not found."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}Détail méta-catégorie ¶
Voir le détail d'une méta-catégorieGET/protocol/{protocol_id}/{revision}/metacategory/{metacategory_id}/
Permet d’obtenir la représentation d’une révision de métacatégorie.
+Example URI
- protocol_id
string(required) Example: a4977c1f-4752-4aff-b724-eec4033af25cIdentifiant d’un protocole
+- revision
number(required) Example: 2Numéro de la révision
+- metacategory_id
string(required) Example: e5712a76-857a-4769-b27e-a3ac3fb38b4dIdentifiant d’une méta-categorie
+
200Headers
Content-Type: application/jsonBody
{
+ "id": "e5712a76-857a-4769-b27e-a3ac3fb38b4d",
+ "revision": 2,
+ "base": "ef14bcce-52ac-44ba-a7d1-f1441bab94de",
+ "name": "référence",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin massa nibh, hendrerit quis justo vitae, luctus tempor dolor. Nam quis fringilla diam.",
+ "color": "#2cbfff",
+ "has_comment": false
+}Schema
{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "revision": {
+ "type": "number"
+ },
+ "base": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "color": {
+ "type": "string"
+ },
+ "has_comment": {
+ "type": "boolean"
+ }
+ }
+}403Retournée si l’utilisateur (application) n’est pas le propriétaire du protocole.
+Body
{
+ "error": "Application is not protocol owner."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}404Retournée si l’un des paramêtre est érroné et qu’aucun objet ne correspond.
+Body
{
+ "error": "Object not found."
+}Schema
{
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-04/schema#"
+}