...
To add roles, just start typing in the select box. The plugin will show you a drop box with all project roles matching the text you entered. To narrow down the list of roles, just continue typing. When you select a role, it is added to the select box and the permissions are immediately effective for the project.
REST API
Satisfaction data can be retrieved using REST API. An URL allows to retrieve all evaluations in one call.
API URL
The url to call to retrieve satisfaction data is :
Code Block |
---|
http://<jira_base_url>/rest/satisfaction/1.0/project/evaluations/all/<project_id> |
Here is an example call and the response (here there is only one evaluation :
Code Block |
---|
curl -D- -u login:password -X GET http://localhost:2990/jira/rest/satisfaction/1.0/project/evaluations/all/10000
[
{
"satisfaction":{
"projectId":10000,
"issueId":10000,
"reporterId":"tstark",
"answers":[
{
"fieldId":1,
"fieldName":"Overall answer satisfaction",
"intAnswer":4,
"fieldType":"EVALUATION",
"overall":true
},
{
"fieldId":2,
"fieldName":"Time to answer satisfaction",
"intAnswer":2,
"fieldType":"EVALUATION",
"overall":false
},
{
"fieldId":3,
"fieldName":"Agent satisfaction",
"intAnswer":4,
"fieldType":"EVALUATION",
"overall":false
}
],
"date":1491895646549,
"issueDate":1491842255195
},
"issueTypeIconUrl":"/images/icons/issuetypes/story.svg",
"userName":"Anthony Stark",
"userAvatarlUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16",
"userProfileUri":"/secure/ViewProfile.jspa?name=tstark",
"issue":{
"created":true,
"subTask":false,
"editable":true
},
"displayDate":"11/Apr/17 9:27 AM",
"iso8601DisplayDate":"2017-04-11T09:27:26+0200",
"creationDisplayDate":"10/Apr/17 6:37 PM",
"iso8601CreationDisplayDate":"2017-04-10T18:37:35+0200",
"overallScore":4,
"issueDisplay":{
"baseUrl":"/jira",
"iconUrl":"/images/icons/issuetypes/story.svg",
"key":"TP-1"
},
"userDisplay":{
"id":0,
"baseUrl":"/jira",
"avatarUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16",
"profileUrl":"/secure/ViewProfile.jspa?name=tstark",
"name":"Anthony Stark"
},
"agentDisplay":{
"id":0,
"baseUrl":"/jira",
"avatarUrl":"http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028?d=mm&s=16",
"profileUrl":"/secure/ViewProfile.jspa?name=admin",
"name":"admin"
}
}
] |
In this example, you can find first the evaluation itself, then data about the issue, project, the agent in charge of the issue, and the reporter (user).
Authentication & Authorization
To access the API, you must provide an authentication. The user calling the API must also have access to target project, otherwise no data will be sent back to API calls.
Authentication
Authentication data can be provided in three ways :
Basic
You can provide credentials using a basic way, like this :
Code Block |
---|
curl -D- -u login:password -X GET <aPI_URL> |
Base64
You can also send the credentials Base64 encoded, as follows :
Code Block |
---|
curl -D- -X GET -H "Authorization: Basic ZnJlZDpmcmVk" <API_URL> |
OAuth
Finally, you can use JIRA Application Links functionality to connect using OAuth.
To configure OAuth, here is the step by step guide. Here I'm using a command line rest client, but you can configure any OAuth-capable application instead.
First, you need to configure an application link.
Go in JIRA Applications administration, then select Application LinksRendez-vous dans l'administration de Confluence (General Configuration) et cliquez sur Application Links dans le menu de gauche. Sur l'écran listant les appLinks, entrez l'url de l'application devant se connecter au plugin et cliquez sur Create New Link. Si votre application n'a pas d'url, entrez une url qui ne répondra pas, peu importe pour la suite.
Lorsque vous cliquez sur le bouton de création, Confluence risque (dans certains cas) d'afficher une fenêtre indiquant que l'application ne répond pas, comme ci-dessous. Ce n'est pas important, cliquez sur Continue.
Confluence vous demande ensuite les informations de paramétrage de la connexion OAuth, comme dans l'écran ci-dessous :
Entrez les informations suivantes :
- Application Name : Donnez un nom à l'application cible.
- Application Type : Obligatoirement Generic Application, normalement pré-rempli.
- Service Provider Name : C'est Confluence, entrez ce que vous voulez pour l'identifier.
- Consumer key : la clef identifiant le consumer OAuth (la même que configurée dans votre application). Ici j'utilise une clef codée en dur dans le client de test que j'utilise : harcoded-consumer.
- Shared secret : la clef partagée (ou clef publique) associée au consumer entré au dessus.
- Request Token URL : CONLFUENCE_BASE_URL + "/plugins/servlet/oauth/request-token"
- Access Token URL : CONLFUENCE_BASE_URL + "/plugins/servlet/oauth/access-token"
- Authorize URL : CONLFUENCE_BASE_URL + "/plugins/servlet/oauth/authorize"
Pour exemple, l'url de base (CONFLUENCE_BASE_URL) de l'instance Confluence utilisée ici est http://localhost:1990/confluence. Par conséquent, la Request Token URL est donc : http://localhost:1990/confluence/plugins/servlet/oauth/request-token.
Cliquez ensuite sur Continue. Confluence vous demande les détails du consumer (la consumer key et le public key (shared secret) ont déjà été entrées à l'étape précédente, mais il faut les entrer de nouveau ici...
Cliquez sur Continue. Confluence configure le lien, et il doit apparaître ensuite dans la liste des AppLinks configurés, comme ci-dessous :
La configuration de l'AppLink dans Confluence est terminée. Vous pouvez commencer à utiliser le plugin depuis votre application, en utilisant le protocole d'autorisation OAuth. Dans le paragraphe suivant, une démonstration est présentée en utilisant un client simple en ligne de commande.
Appel du plugin via un client OAuth
La démonstration qui suit utilise un client en ligne de commande. Certaines manipulations ne sont pas nécessaires avec une application plus évoluée qui sait gérer le protocole OAuth seul.
D'abord, j'utilise mon client pour demander à Confluence un RequestToken.
Info |
---|
Notez que dans la commande que j'utilise ci-dessous, je ne fournis pas d'url de callback (qui devrait être à la fin de la ligne de commande, après l'url de base de Confluence). Dans mon cas, si je ne fournis pas cette url, Confluence affichera le code de vérification (voir plus bas) dans le navigateur. Si vous fournissez cette url, il sera envoyé à votre application via cette url de callbak. |
Code Block | ||
---|---|---|
| ||
zeus:rest-oauth phoenix$ java -jar rest-oauth-client-1.0.one-jar.jar requestToken http://localhost:1990/confluence
Token is MdJ8Zqsokinlsr3XgGGufBRHsrKYf3JH
Token secret is 8bH6kMgIuTHFqIu1ZR6DbkKUMBB287jc
Retrieved request token. go to http://localhost:1990/confluence/plugins/servlet/oauth/authorize?oauth_token=MdJ8Zqsokinlsr3XgGGufBRHsrKYf3JH |
Confluence me répond en me fournissant une url que je dois ouvrir pour autoriser l'accès de mon client dans Confluence. L'écran présenté lors de l'ouverture de l'url est le suivant :
Confluence me demande d'autoriser l'accès et m'indique que les accès effectués via le token OAuth qui sera généré le seront en mon nom (admin). L'utilisateur utilisé est celui qui est connecté à Confluence lors de l'accès à l'url fournie. Si vous n'êtes pas connecté, Confluence vous demandera d'abord de vous connecter avant d'afficher l'écran d'autorisation OAuth.
Je clique sur Allow, et Confluence m'affiche un écran contenant le code de vérification :
Je peux donc demander à mon client de récupérer un AccessToken, qui me servira pour effectuer mes appels au plugin.
Code Block | ||
---|---|---|
| ||
zeus:rest-oauth phoenix$ java -jar rest-oauth-client-1.0.one-jar.jar accessToken http://localhost:1990/confluence MdJ8Zqsokinlsr3XgGGufBRHsrKYf3JH 8bH6kMgIuTHFqIu1ZR6DbkKUMBB287jc k621j4
Access token is : oSsNuFfMwL3MDDxYZQ1J1DeU05LDPRiV |
Ici j'ai fourni, dans l'ordre, le RequestToken et le Token Secret fournis lors de mon premier appel ci dessus, suivis du code de vérification fourni par confluence après l'autorisation de l'accès. Confluence me répond en me fournissant l'AccessToken.
Je peux ensuite appeler le plugin directement depuis mon client, sans fournir de login/password :
Code Block | ||
---|---|---|
| ||
zeus:rest-oauth phoenix$ java -jar rest-oauth-client-1.0.one-jar.jar request oSsNuFfMwL3MDDxYZQ1J1DeU05LDPRiV http://localhost:1990/confluence/rest/docfinder/1.0/find/key/AAA123457
RESPONSE IS {"key":"AAA123457","status":401,"message":"One document found.","results":["http://localhost:1990/confluence/download/attachments/983044/gefco-atlas.csr?version=1&modificationDate=1445446105491&api=v2"]} |
Si vous appelez le plugin sans fournir d'accès token, le plugin vous répondra qu'il n'a pas pu identifier l'utilisateur, comme ci-dessous :
Code Block | ||
---|---|---|
| ||
zeus:rest-oauth phoenix$ curl -X GET "http://localhost:1990/confluence/rest/docfinder/1.0/find/key/AAA123457"
{"status":201,"message":"User was not found."} |
Contact
Should you have any questions about Ovyka Satisfaction for JIRA plugin, or should you encounter any problem using it, feel free to contact us by dropping an email to this address : contact@ovyka.com
...