Полная документация по REST API доступна в разделе "Справочник разработчика"
В справочнике разработчика выберите интересующую сущность и на дополнительной панели справа будет представлен полный перечень атрибутов, с их характеристиками, примеры запросов REST API, пример возвращаемых данных, объектная модель и примеры написания PHP-скриптов для автоматизации.
Для использования REST API в каждом запросе необходимо передавать HTTP-заголовок с ключом:
'Devprom-Auth-Key': 'a806f6e2af139ea856db981c20278865'
Для получения ключа необходимо открыть профиль пользователя (меню на аватарке пользователя) и перейти в раздел "Ключи".
# curl -X POST -H "Devprom-Auth-Key: a806f6e2af139ea856db981c20278865" -H "Content-Type:application/json" https://demo.myalm.ru/pm/support/api/v1/issues -d '{"Caption":"test123"}'
Под Windows:
# curl -X POST -H "Devprom-Auth-Key: a806f6e2af139ea856db981c20278865" -H "Content-Type:application/json" https://demo.myalm.ru/pm/support/api/v1/issues -d "{\"Caption\":\"test123\"}"
Если вы хотите отправлять заявки пользователей при помощи собственной Web-формы, то вам пригодится следующий пример, который отправляет тестовую заявку в проект поддержки. Перед использованием этого примера вам необходимо:
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
dataType: 'json',
type: 'POST',
url: 'https://demo.myalm.ru/pm/support/api/latest/issues',
data: JSON.stringify({
'Caption':'Test',
'Author': 'somebody@mail.ru'
}),
headers: {
'Devprom-Auth-Key': 'a806f6e2af139ea856db981c20278865',
},
success: function(data) {
$('body').append('div').html('Issue id = ' + data.Id);
}
});
});
</script>
</body>
</html>
<?php
$appUrl = 'https://demo.myalm.ru';
$projectCode = 'kanban';
$authKey = '974ccef5dd367cc448b8c1d1a9bdb2fd';
$curl = curl_init();
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array(
"Content-Type: application/json",
"Devprom-Auth-Key: ".$authKey
)
);
// get all issues
curl_setopt($curl, CURLOPT_URL, $appUrl.'/pm/'.$projectCode.'/api/latest/issues');
curl_setopt($curl, CURLOPT_HTTPGET, true);
$result = curl_exec($curl);
var_export(json_decode($result, true));
// create a new issue
curl_setopt($curl, CURLOPT_URL, $appUrl.'/pm/'.$projectCode.'/api/latest/issues');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPGET, false);
curl_setopt($curl, CURLOPT_POSTFIELDS,
json_encode(
array(
'Caption' => 'Issue title',
'Description' => 'Issue description'
)
)
);
$result = curl_exec($curl);
var_export(json_decode($result, true));
curl_close($curl);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
class DevpromRestService
{
public void updateIssue()
{
// Получим список пожеланий в проекте
List<Issue> wasIssues = new JavaScriptSerializer().Deserialize<List<Issue>>(
makeRequest("GET", "issues")
);
// Создаем новое пожелание
Issue newIssue = new JavaScriptSerializer().Deserialize<Issue>(
makeRequest("POST", "issues", new JavaScriptSerializer().Serialize(
new Issue
{
Caption = "Название нового пожелания",
Description = "Описание нового пожелания",
Priority = "2"
}
))
);
// Редактируем ранее созданное пожелание
makeRequest("PUT", "issues/" + newIssue.Id, new JavaScriptSerializer().Serialize(
new Issue
{
Description = "Изменненное название пожелания",
Priority = "1"
}
));
// Удалим созданное пожелание
makeRequest("DELETE", "issues/" + newIssue.Id);
}
public string makeRequest(string method, string route, string data = "")
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(
TestHelper.appHostUrl + "/pm/<project-code>/api/v1/" + route
);
request.Method = method;
request.ContentLength = 0;
request.ContentType = "application/json";
request.Headers.Add(
"Authorization",
"Basic " + Convert.ToBase64String(
Encoding.ASCII.GetBytes(
<логин-пользователя> + ":" + <пароль-пользователя>
)
)
);
var bytes = Encoding.GetEncoding("windows-1251").GetBytes(data);
request.ContentLength = bytes.Length;
if (!String.IsNullOrEmpty(data))
{
using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, 0, bytes.Length);
}
}
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
{
throw new ApplicationException(
String.Format("Request failed. Received HTTP {0}", response.StatusCode)
);
}
return (new StreamReader(response.GetResponseStream(), Encoding.UTF8)).ReadToEnd();
}
}
Для создания проекта программным путем необходимо отправить POST запрос:
curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -d "Caption=Test1&CodeName=test1&Template=44&DemoData=N" http://<адерс_сервера>/projects/new?appkey=<ключ>
Название параметра | Назначение параметра |
---|---|
Caption | Название проекта |
CodeName | Кодовое имя проекта, используемое в адресной строке ссылок на проектные артефакты |
Template | Идентификатор процесса, который должен быть использован для создания проекта |
DemoData | N - не использовать демонстрационные данные |
appkey | Ключ для аутентификации, который можно получить на странице профиля участника (Ключи - Авторизация по URL), от имени которого будет создаваться проект. Данный пользователь автоматически становится координатором (руководителем) проекта. |