diff -r b5d11572f1ed -r 672e3c4bbd0c design/api/metacategory.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/design/api/metacategory.html Mon Jul 17 14:13:32 2017 +0200 @@ -0,0 +1,655 @@ +API Back to top

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 protocoles
GET/protocol/{?page,page_size}

Liste les protocoles pour une application. L’application est déterminée par le token passé comme authentification.

+

Example URI

GET /protocol/?page=3&page_size=15
URI Parameters
HideShow
page
number (optional) Default: 1 Example: 3

Get the page.

+
page_size
number (optional) Default: 10 Example: 15

Set number of protocol per page

+
Request
HideShow
Headers
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
+  "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 protocole
POST/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

POST /protocol/
Request
HideShow
Headers
Content-Type: application/json
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
Body
{
+  "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"
+    }
+  }
+}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
+  "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 protocole
GET/protocol/{id}/{?page,page_size}

Liste les revisions d’un protocole pour une application.

+

Example URI

GET /protocol/a4977c1f-4752-4aff-b724-eec4033af25c/?page=3&page_size=15
URI Parameters
HideShow
id
string (required) Example: a4977c1f-4752-4aff-b724-eec4033af25c

Identifiant d’un protocole

+
page
number (optional) Default: 1 Example: 3

Get the page.

+
page_size
number (optional) Default: 10 Example: 15

Set number of protocol per page

+
Request
HideShow
Headers
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
+  "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"
+    }
+  }
+}
Response  403
HideShow

Retourné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#"
+}
Response  404
HideShow

Retourné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 protocole
POST/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 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.

    +
  • +
  • +

    Si id n’est pas présent: 2 possibilités:

    +
      +
    • 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.
    • +
    • 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.
    • +
    +
  • +
+

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

POST /protocol/a4977c1f-4752-4aff-b724-eec4033af25c/
URI Parameters
HideShow
id
string (required) Example: a4977c1f-4752-4aff-b724-eec4033af25c

Identifiant d’un protocole

+
Request
HideShow
Headers
Content-Type: application/json
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
Body
{
+  "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"
+    }
+  }
+}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
+  "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"
+    }
+  }
+}
Response  403
HideShow

Retourné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#"
+}
Response  409
HideShow

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.

+
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 protocole
GET/protocol/{id}/{revision}/

Permet d’obtenir la représentation complète d’une révision de protocole.

+

Example URI

GET /protocol/a4977c1f-4752-4aff-b724-eec4033af25c/2/
URI Parameters
HideShow
id
string (required) Example: a4977c1f-4752-4aff-b724-eec4033af25c

Identifiant d’un protocole

+
revision
number (required) Example: 2

Numéro de la révision

+
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
+  "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"
+    }
+  }
+}
Response  403
HideShow

Retourné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#"
+}
Response  404
HideShow

Retourné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égorie
GET/protocol/{protocol_id}/{revision}/metacategory/{metacategory_id}/

Permet d’obtenir la représentation d’une révision de métacatégorie.

+

Example URI

GET /protocol/a4977c1f-4752-4aff-b724-eec4033af25c/2/metacategory/e5712a76-857a-4769-b27e-a3ac3fb38b4d/
URI Parameters
HideShow
protocol_id
string (required) Example: a4977c1f-4752-4aff-b724-eec4033af25c

Identifiant d’un protocole

+
revision
number (required) Example: 2

Numéro de la révision

+
metacategory_id
string (required) Example: e5712a76-857a-4769-b27e-a3ac3fb38b4d

Identifiant d’une méta-categorie

+
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
+  "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"
+    }
+  }
+}
Response  403
HideShow

Retourné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#"
+}
Response  404
HideShow

Retourné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#"
+}

Generated by aglio on 16 Jul 2017

\ No newline at end of file