design/api/metacategory.apib
changeset 116 672e3c4bbd0c
child 133 6f3078f7fd47
equal deleted inserted replaced
115:b5d11572f1ed 116:672e3c4bbd0c
       
     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