Les opérations de base de création, lecture, mise à jour et suppression sont fournies conformément aux conventions communes de l'API REST. L'URL de niveau supérieur pour un type d'élément représente la collecte des éléments de ce type. Pour rendre la liste de tous les éléments de ce type sous la forme d'un tableau d'objets JSON, utilisez la méthode HTTP GET avec les en-têtes HTTP appropriés ou le paramètre de requête json. Pour créer un nouvel élément, utilisez la méthode HTTP POST dans l'URL de niveau supérieur pour le type approprié, et fournissez des données JSON pour l'élément dans le corps de la requête. Le corps de la réponse inclut une représentation JSON complète du nouvel élément, y compris la propriété générée par le serveur id. Vous pouvez également fournir un tableau d'objets JSON pour créer plusieurs éléments en une seule demande. Dans ce cas, le corps de la réponse contient un tableau JSON des nouveaux éléments dans le même ordre qu'ils ont été fournis dans la demande. De même, vous pouvez mettre à jour les données de plusieurs éléments en utilisant la méthode HTTP PUT avec un tableau d'éléments JSON. Vous pouvez supprimer plusieurs éléments à l'aide de la méthode HTTP DELETE avec un tableau JSON qui contient des éléments JSON complets ou uniquement les UUID de ces éléments.
Pour exécuter une opération sur un seul élément existant, ajoutez l'UUID de l'élément à l'URL de niveau supérieur pour le type. Par exemple, pour accéder aux données JSON pour l'échantillon d'édition qui est fourni, utiliser la méthode HTTP GET avec l'URL http://url_base/releases/00000000-0000-0000-0000-000000000036/. Pour mettre à jour les données relatives à un élément, utilisez la méthode HTTP PUT, et indiquez un objet JSON mis à jour dans le corps de la demande. (Dans ce cas, l'UUID dans de l'URL de requête prévaut sur la propriété id dans le corps de la requête.) Pour supprimer l'élément, utilisez la méthode HTTP DELETE ; aucun corps de requête n'est nécessaire dans ce cas.
Lorsque vous utilisez les opérations créer, lire et mettre à jour (POST, GET et PUT), vous pouvez inclure le paramètre de requête facultatif format pour régler la sortie JSON pour les cas d'utilisation spécifiques. Si vous ne fournissez pas ce paramètre, ou si la valeur du paramètre n'est pas reconnue, un format par défaut est utilisé. Chaque type d'élément prend en charge un ensemble différent de formats ; ces formats sont listés avec les informations de référence pour le type d'élément. Certains formats montrent une grande quantité de détails et d'autres montrent une petite quantité de détails, mais la différence est uniquement dans les informations qui sont représentées ; les valeurs sont les mêmes.
Vous pouvez utiliser les formats list et detail avec n'importe quel type d'élément. Le format list offre des informations récapitulatives, comme vous pourriez les afficher dans un tableau d'éléments. Le format detail fournit des informations plus détaillées. Ce format comprend généralement le contenu des éléments associés. Pour certains éléments, ces formats sont identiques. En outre, les types d'éléments qui ont une propriété name ont également un format name. Ce format comprend uniquement les propriétés id et name, ce qui peut être utile pour afficher une liste d'éléments pour la sélection par nom. Par commodité, le format name pour un type d'élément peut également être produit en ajoutant name à l'URL de niveau supérieur pour le type, par exemple, GET http://url_base/applications/name.
Lorsque vous fournissez des données JSON comme entrée pour les opérations créer ou mettre à jour, l'API REST ne tient compte que des propriétés qui sont inscriptibles sur l'élément. L'API ignore toutes les autres données. Les propriétés en lecture seule, telles que les nombres calculés ou les dates de création, ne sont pas mises à jour. L'API ignore les propriétés non reconnues. Les propriétés des éléments connexes, autres que la propriété id, utilisées pour établir une référence, ne sont pas non plus mises à jour.
{
"name": "Nouvelle édition",
"team": {
"id": "00000000-0000-0000-0000-000000000206",
"name": "Pas le nom de l'équipe réel" },
"lifecycleModel": "00000000-0000-0000-0000-000000000006",
"totalChanges": 42,
"BadProperty": "xxxx"
}
{
"name": "Nouvelle édition",
"team": "00000000-0000-0000-0000-000000000206",
"lifecycleModel": "00000000-0000-0000-0000-000000000006"
}
De même, lorsque vous mettez à jour un élément existant, l'API change uniquement les propriétés que vous spécifiez dans l'entrée JSON. L'API ne modifie pas les propriétés que vous omettez. Pour effacer la valeur d'une propriété, spécifiez une valeur nulle explicite JSON pour cette propriété.
{
"id": "00000000-0000-0000-0000-123456789000",
"name": "Nouvelle fonction",
"description": "",
"status": "In Progress",
"type": {
"id":"00000000-0000-1201-0000-000000000001",
"name":"Fonction",
"icon":"feature"}
}
L'entrée suivante associe la modification à l'échantillon d'édition, mais ne met pas à jour les autres propriétés de la modification.{
"id": "00000000-0000-0000-0000-123456789000",
"release": "00000000-0000-0000-0000-000000000036"
}
Pour inverser cette opération et effacer l'association de cette modification à l'échantillon d'édition, vous pouvez utiliser l'entrée suivante :{
"id": "00000000-0000-0000-0000-123456789000",
"release": null
}
{
"id": "00000000-0000-0000-0000-123456789000",
"release": "00000000-0000-0000-0000-000000000036"
}
{
"id": "00000000-0000-0000-0000-123456789000",
"release": {"id":"00000000-0000-0000-0000-000000000036"}
}
{
"id": "00000000-0000-0000-0000-123456789000",
"release": {
"id":"00000000-0000-0000-0000-000000000036",
"name":"Exemple d'édition"}
}
{
"id": "00000000-0000-0000-0000-123456789000",
"release": {
"id":"00000000-0000-0000-0000-000000000036",
"name":"Pas le nom d'édition réel"}
}
Cependant, dans d'autres cas, en particulier si un élément nécessite une relation spécifique, vous pouvez spécifier l'entrée pour le côté valeur unique de la relation. Par exemple, une application peut être associée à plusieurs équipes. Dans ce cas, lorsque vous créez une application, vous pouvez fournir un tableau JSON de chaînes UUID pour la propriété "teams". Il n'existe pas d'URL spéciales pour manipuler cette relation.
Certains types d'éléments prennent en charge le stockage et la récupération de paires clé-valeur à structure libre en plus des propriétés définies statiquement. Ce type de propriété représente souvent des données qui sont liées à un fournisseur d'intégration. Par exemple, un changement qui représente un élément de travail IBM Rational Team Concert pourrait stocker l'identificateur pour l'élément de travail en tant que propriété dans ce stockage clé-valeur.
{
"id": "00000000-0000-0000-0000-123456789000",
"name": "Nouvelle fonction",
"description": "",
"status": "In Progress",
"type": {
"id":"00000000-0000-1201-0000-000000000001",
"name":"Fonction",
"icon":"feature"},
"properties": {
"first":"first value",
"second":"second value",
"third":"third value"}
}
La clé et la valeur doivent être représentées en tant que chaînes JSON.
Comme avec des propriétés définies statiquement, si une clé est omise de l'entrée, les opérations de mise à jour ne la changent pas. Pour effacer une paire clé-valeur, affectez une valeur nulle JSON à la clé.Pour certains types d'éléments, la requête GET de niveau supérieur peut fournir un sous-ensemble d'éléments plutôt que la liste complète. La récupération de sous-ensembles d'éléments de ce type est communément appelée "pagination" car elle implique le chargement d'une seule "page" de données dans chaque requête.
Deux autres formes de pagination sont disponibles, en utilisant les paramètres de la requête ou l'en-tête HTTP Range.
Pour utiliser les paramètres de requête pour la pagination, spécifiez un paramètre de requête rowsPerPage et pageNumber dans la requête HTTP GET. Pour récupérer la première page, indiquez le code pageNumber=1. Par exemple, pour récupérer les cinq premières applications, utilisez la requête GET http://url_base/applications/?rowsPerPage=5&pageNumber=1.
Range: items=0-4
Content-Range: 0-4/10
Si vous avez demandé les cinq premières modifications, et seules trois modifications sont disponibles, l'en-tête ressemble à ceci : Content-Range: 0-2/3
Pour trier les résultats de l'opération GET de niveau supérieur, spécifiez les paramètres orderField et sortType. Le paramètre orderField doit contenir le nom d'une propriété de tri. Le paramètre sortType doit contenir la valeur asc pour trier en ordre croissant ou la valeurdesc pour trier en ordre décroissant.
Pour trier sur les propriétés des éléments connexes, indiquez le nom de la propriété au format en pointillés. Par exemple, pour trier la liste des modifications en fonction de la mise en production associée, spécifiez la valeur release.name. L'ordre n'est pas précisé si une propriété dans ce chemin a la valeur null.
GET http://url_base/changes/?format=detail&rowsPerPage=5&
pageNumber=1&orderField=release.name&sortType=asc
Certaines propriétés ne peuvent être utilisées pour le tri. En particulier, les propriétés qui représentent des données récapitulatives, telles que le nombre d'éléments, ne peuvent généralement pas être utilisées pour le tri.GET http://_url_de_base/releases/
?filterFields=dateCreated
&filterType_dateCreated=gt
&filterClass_dateCreated=Long
&filterValue_dateCreated=1421171883574
&orderField=dateCreated
&sortType=asc
Cet exemple utilise les paramètres de requête suivants :filterFields=dateCreated&filterFields=name