Jira提供了较为完善的RestAPI,这篇文章来看一下Jira-Software所提供的Rest API功能, 并提供curl的方式进行project的确认,并在已经创建的project中创建issue。
事前准备
项目 | 说明 |
---|---|
Jira类型 | Jira-Software |
安装方式 | 本地 |
版本 | 7.11 |
Mysql版本 | 5.7.18 |
主要功能
Jira-Software相关的Rest API的前缀为/rest/api/2/,主要功能如下:
- 权限:获取当前用户的权限和全部权限
- 应用属性:获取属性信息
- 应用角色: 对Jira的应用角色提供GET和PUT操作
- 附件: 对附件提供获取和删除等操作
- 审计记录:提供对审计记录的获取和添加的功能
- 头像: 对头像提供获取/保存/创建的操作
- comment属性: 对comment属性相关的操作(试验阶段)
- 组件操作:对组件的增删改查操作
- 配置:获取配置信息
- 用户自定义字段选项:获取用户自定义字段选项
- 仪表板:获取仪表板列表以及详情信息
- 仪表板项目:对于仪表版项目属性的增删改查操作
- 字段:创建用户自定义字段或者获取字段
- 过滤器:对filer的增删改查以及共享权限的增删改查与设定进行查询
- group:对group进行增删改查,注意直接获取group的api已经deprecated了,另外还有添加用户以及对组中用户的操作
- groups:提供与gourp picker和groupuserpicker关联的操作
- issue: 对issue提供增删改查操作,同时对相关的comment也提供增删改查,还有issue的分配,以及投票相关的操作都可以进行操作,同时可以对worklog进行增删改查。可以对issue进行添加附件的操作,可对issue的属性进行操作(试验阶段)
- issue的子任务:对issue的子任务提供获取和移动以及确认是否可以移动的功能
- issueLink:对issuelink提供创建/删除/获取的功能
- issuelink类型:提供增删改查的功能
- issue类型:提供增删改查的功能
- issue类型属性:提供增删改查的功能(试验阶段)
- 自动补齐:获取查询相关的自动补齐信息
- jmx监控:获取监控数据/开始监控/停止监控
- 个人偏好:获取/设定/删除个人偏好设定
- 当前用户操作:对当前登录的用户提供获取用户信息/更新用户信息/变更个人密码的功能
- 密码策略:获取/创建/更新策略
- 权限设定:对权限设定相关的增删改查操作
- 优先度:获取优先度信息
- 优先度设定:对优先度设定的增删改查操作(试验阶段)
- 项目:对项目的增删改查等操作
- 项目属性:对项目属性的增删改查操作(试验阶段)
- 项目角色:对项目角色的增删改查操作(试验阶段)
- 项目类型:对项目分类进行增删改查操作
- 索引操作:获取索引信息,进行reindex操作,获取reindex的进度信息
- 角色:对角色提供增删改查的操作
- Screen:对jira的Screen提供各种增删改查操作
- upgrade:提供开始升级以及确认结果的功能
- 用户:提供对用户相关的各种增删改查操作(创建/修改/删除都为试验阶段)
- 用户属性:对用户属性提供增删改查操作
- 版本:对版本提供各种增删改查操作
- workflow:对工作流以及设定提供各种增删改查操作
- 工作日志:对工作日志获取功能
- 会话:提供登录Login/确认/退出Logout相关的会话操作
rest api
使用方式
Jira-software提供OAuth和HTTP BASIC方式进行REST API操作。在这篇文章中我们直接使用HTTP BASIC的用户名/密码方式进行REST API操作。
使用格式
格式:http://host:port/context/rest/api-name/api-version/resource-name
确认项目信息
确认一下在安装和设定Jira时所创建的jiratest的项目信息
[root@platform ~]# curl -u liumiao:liumiao http://192.168.163.118:32901/rest/api/2/project 2>/dev/null|jq .
[
{
"expand": "description,lead,url,projectKeys",
"self": "http://192.168.163.118:32901/rest/api/2/project/10000",
"id": "10000",
"key": "JIR",
"name": "jiratest",
"avatarUrls": {
"48x48": "http://192.168.163.118:32901/secure/projectavatar?avatarId=10324",
"24x24": "http://192.168.163.118:32901/secure/projectavatar?size=small&avatarId=10324",
"16x16": "http://192.168.163.118:32901/secure/projectavatar?size=xsmall&avatarId=10324",
"32x32": "http://192.168.163.118:32901/secure/projectavatar?size=medium&avatarId=10324"
},
"projectTypeKey": "software"
}
]
[root@platform ~]#
确认issuetype
确认issuetype的信息, 确认bug类型的id为10004,接下来将创建一个bug类型的issue到jiratest项目中
[root@platform ~]# curl -u liumiao:liumiao http://192.168.163.118:32901/rest/api/2/issuetype 2>/dev/null|jq .
[
{
"self": "http://192.168.163.118:32901/rest/api/2/issuetype/10002",
"id": "10002",
"description": "A task that needs to be done.",
"iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
"name": "Task",
"subtask": false,
"avatarId": 10318
},
{
"self": "http://192.168.163.118:32901/rest/api/2/issuetype/10003",
"id": "10003",
"description": "The sub-task of the issue",
"iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10316&avatarType=issuetype",
"name": "Sub-task",
"subtask": true,
"avatarId": 10316
},
{
"self": "http://192.168.163.118:32901/rest/api/2/issuetype/10001",
"id": "10001",
"description": "Created by Jira Software - do not edit or delete. Issue type for a user story.",
"iconUrl": "http://192.168.163.118:32901/images/icons/issuetypes/story.svg",
"name": "Story",
"subtask": false
},
{
"self": "http://192.168.163.118:32901/rest/api/2/issuetype/10004",
"id": "10004",
"description": "A problem which impairs or prevents the functions of the product.",
"iconUrl": "http://192.168.163.118:32901/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype",
"name": "Bug",
"subtask": false,
"avatarId": 10303
},
{
"self": "http://192.168.163.118:32901/rest/api/2/issuetype/10000",
"id": "10000",
"description": "Created by Jira Software - do not edit or delete. Issue type for a big user story that needs to be broken down.",
"iconUrl": "http://192.168.163.118:32901/images/icons/issuetypes/epic.svg",
"name": "Epic",
"subtask": false
}
]
[root@platform ~]#
创建issue
创建一个bug类型的issue与jiratest项目进行关联,首先准备json文件
[root@platform ~]# cat issuetest.json
{
"fields": {
"project":
{
"id": "10000"
},
"summary": "Test Issue for this project.",
"description": "Create issue for specified project by using Rest Api",
"issuetype": {
"id": "10004"
}
}
}
[root@platform ~]#
创建issue, 从返回的结果看到了KEY为JIRA-24的结果
[root@platform ~]# curl -u liumiao:liumiao -X POST --data @issuetest.json -H "Content-Type: application/json" http://192.168.163.118:32901/rest/api/2/issue/ |jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 346 0 90 100 256 93 265 --:--:-- --:--:-- --:--:-- 265
{
"id": "10023",
"key": "JIR-24",
"self": "http://192.168.163.118:32901/rest/api/2/issue/10023"
}
[root@platform ~]#
从页面上也看到了同样的信息
参考文献
https://docs.atlassian.com/software/jira/docs/api/REST/7.11.0/
https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/