Программные интерфейсы (API)
SecurityService API
Используйте данный веб-сервис для авторизации в проекте и получения авторизационного ключа, используемого для работы с остальными веб-сервисами DEVPROM.
Протокол: SOAP, WebService
Ссылка: http://projectscloud.ru/api/securityservice
WSDL описание: http://projectscloud.ru/api/securityservice?wsdl
Методы
Название | Возвращаемое значение | Назначение |
login (string userName, string userPassword, string projectName) | Token | Выполняет авторизацию пользователя в проекте. Переменная projectName должна содержать кодовое название проекта. Возвращает объект, содержащий авторизационные данные. |
Классы
Название | Атрибут | Назначение |
Token | Key | Ключ для авторизации пользователя при выполнении методов веб-сервисов. |
Примеры (C#)
// авторизуемся в проекте
security.SecurityService api = new security.SecurityService() {
Url = 'http://projectscloud.ru/api/securityservice'
};
security.Token _token = api.login("guest", "guest", "development");
TestService API
Используйте данный веб-сервис для создания тестовой документации, запуска тестов и отметки результатов выполнения тестов. Использование сервиса доступно после авторизации. Все методы сервиса в качестве первого параметра принимают ключ, полученный после авторизации.
Протокол: SOAP, WebService
Ссылка: http://projectscloud.ru/api/testservice
WSDL описание: http://projectscloud.ru/api/testservice?wsdl
Методы
Название | Возвращаемое значение | Назначение |
Create (string token.Key, TestScenario object) | TestScenario | Создание нового раздела тестовой документации, привязанного к корневому узлу тестовой документации. Атрибуты нового раздела передаются в параметре object. Возвращает объект, описывающий созданный тестовый раздел. |
Find (string token.Key, TestScenario object) | TestScenario | Загрузка атрибутов раздела тестовой документации по заданным параметрам, определенным в object. Если задать значение object.Id, то метод выполнит поиск по идентификатору тестового раздела. Если указать значение атрибута object.Caption, то - найдет раздел по его названию. Возвращает объект, описывающий искомый тестовый раздел. |
Append (string token.Key, TestScenario parent, TestScenario object) | TestScenario | Создает новый подраздел тестовой документации в существующем разделе, идентифицируемом параметром parent. Возвращает объект, описывающий созданный тестовый подраздел. |
Run (string token.Key, TestScenario object, string version, Environment environment) | TestExecution | Запускает на тестирование переданный в качестве параметра object тестовый раздел документации. Если у переданного тестового раздела есть дочерние разделы, то в тест будет включать в себя все дочерние разделы. При создании теста можно указать версию тестируемого приложения, а также окружение, на котором осуществляется тестирование. Окружение идентифицируется атрибутов environment.Caption. Необходимо заранее настроить справочник окружений в проекте. Метод возвращает объект, описывающий тест. |
ReportResult (string token.Key, TestExecution execution, TestScenario object, TestExecutionResult result) | Отметка о результате тестирования тестового раздела (object) в составе теста (execution). Результат выполнения идентифицируется атрибутом result.ReferenceName. | |
ReportIssue (string token.Key, TestExecution execution, TestScenario object, Request request) | Request | Регистрация в проекте ошибки, полученной в результате тестирования раздела (object) в составе теста (execution). Параметры ошибки, например, название, содержание и т.п. задается в атрибутах объекта request. В результате выполнения метода возвращается объект Request, описывающий созданное пожелание. |
ReportFile (string token.Key, TestExecution execution, TestScenario object, Attachment file) | Загрузка в проект файла, связанного с результатами тестирования раздела (object) в составе теста (execution). Вы можете загрузить связанный с результатом снимок экрана, дамп или лог-файл. | |
GetResult (string token.Key, TestExecution execution) | TestExecutionResult | Возвращает текущий результат выполнения теста в виде объекта TestExecutionResult. |
Классы
Название | Атрибут | Назначение |
TestScenario | Id | Идентификатор объекта |
Caption | Название тестового раздела | |
Content | Содержание тестового раздела | |
ParentPage | Идентификатор родительского тестового раздела | |
Environment | Id | Идентификатор объекта |
Caption | Название окружения, уникальное значение, используемое для идентификации окружения | |
TestExecutionResult | Id | Идентификатор объекта |
Caption | Отображаемое название результата | |
ReferenceName | Кодовое название результата, уникальное значение, используемое для идентификации типа результата | |
Request | Id | Идентификатор объекта |
Caption | Название пожелания/ошибки | |
Description | Описание пожелания/ошибки | |
Attachment | Id | Идентификатор объекта |
FilePath | Название файла, которое будет отображаться в проекте | |
FileExt | MIME-тип файла | |
File | Текстовое поле типа base64binary, содержащее тело файла в кодировке base64 |
Примеры (C#)
// авторизуемся в проекте
security.SecurityService api = new security.SecurityService() {
Url = 'http://projectscloud.ru/api/securityservice'
};
security.Token _token = api.login("guest", "guest", "development");
// создаем тестовый раздел документации
testing.TestService _api = new testing.TestService() {
Url = 'http://projectscloud.ru/api/testservice'
};
testing.testscenario root = new testing.testscenario { Caption = "Название 1"};
root = _api.Create(_token.Key, root);
// добавляем дочерний раздел
testing.testscenario child = new testing.testscenario { Caption = "Название 2", Content = "Содержание 2" };
child = _api.Append(_token.Key, root, child);
// запускаем тест на выполнение
testing.testexecution execution =
_api.Run(_token.Key, root, "1.1", new testing.environment { Caption = "Windows XP" } );
// устанавливаем результат тестирования по дочернему разделу
_api.ReportResult(_token.Key, execution, child,
new testing.testexecutionresult { ReferenceName = "failed" });
// регистрируем ошибку
testing.request bug = new testing.request { Caption = "Ошибка в тесте 2" };
bug = _api.ReportIssue(_token.Key, execution, child, bug);
// загружаем файл, например, дамп
string fileName = Environment.GetEnvironmentVariable("windir") + "\\notepad.exe";
FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read);
byte[] fileBytes = new byte[fs.Length];
fs.Read(fileBytes, 0, (int)fs.Length);
fs.Close();
testing.attachment file = testing.attachment
{
FilePath = "notepad.exe",
FileExt = (new FileInfo(fileName)).Extension,
File = fileBytes
};
_api.ReportFile(_token.Key, execution, child, file);
SupportService API
Используйте данный веб-сервис для программного добавления доработок или регистрации ошибок. Использование сервиса доступно после авторизации. Все методы сервиса в качестве первого параметра принимают ключ, полученный после авторизации.
Протокол: SOAP, WebService
Ссылка: http://projectscloud.ru/api/supportservice (или http://your_server_name/api/supportservice)
WSDL описание: http://projectscloud.ru/api/supportservice?wsdl
Методы
Название | Возвращаемое значение | Назначение |
RaiseIssue (string token.Key, request issue) | request | Создание пожелания с параметрами, заданными в качестве значений атрибутов переменной issue. |
AttachFile (string token.Key, request issue, attachment file) | attachment | Прикрепляет файл к пожеланию, идентифицируемому полем issue.Id. Атрибуты файла, равно как и тело файла содержится в значениях переменной file. |
Классы
Название | Атрибут | Назначение |
Request | Id | Идентификатор объекта |
Caption | Название пожелания/ошибки | |
Description | Описание пожелания/ошибки | |
Attachment | Id | Идентификатор объекта |
FilePath | Название файла, которое будет отображаться в проекте | |
FileExt | MIME-тип файла | |
File | Текстовое поле типа base64binary, содержащее тело файла в кодировке base64 |
Примеры (C#)
// авторизуемся в проекте
security.SecurityService api = new security.SecurityService() {
Url = 'http://projectscloud.ru/api/securityservice'
};
support.SupportService _supportService = new support.SupportService() {
Url = 'http://projectscloud.ru/api/securityservice'
};
security.Token _token = api.login("guest", "guest", "development");
var issue = new support.request() {
Caption = "Краткое описание ошибки",
Description = "Подробное описание ошибки"
};
issue = _supportService.RaiseIssue(_token.Key, issue);
// загружаем файл, например, дамп
string fileName = Environment.GetEnvironmentVariable("windir") + "\\notepad.exe";
FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read);
byte[] fileBytes = new byte[fs.Length];
fs.Read(fileBytes, 0, (int)fs.Length);
fs.Close();
support.attachment file = support.attachment
{
FilePath = "notepad.exe",
FileExt = (new FileInfo(fileName)).Extension,
File = fileBytes
};
_supportService.AttachFile(_token.Key, issue, file);
DataService API
Используйте данный веб-сервис для программного доступа к данным, хранящимся в DEVPROM, например, с целью интеграции с другими инструментами, используемыми в работе. Все методы сервиса в качестве первого параметра принимают ключ, полученный после авторизации.
Протокол: SOAP, WebService
Ссылка: http://projectscloud.ru/api/dataservice (или http://your_server_name/api/dataservice)
WSDL описание: http://projectscloud.ru/api/dataservice?wsdl
Методы
Название | Возвращаемое значение | Назначение |
<класс>RemoteAdd (string token.Key, <класс> object) | <класс> | Создание экземпляра <класс> с атрибутами по умолчанию, заданными в переменной object. Возвращает созданный экземпляр с заполненными полями Id и т.п. |
<класс>RemoteAddBatch (string token.Key, <класс>[] objects) | <класс> | Создание экземпляров <класс> из вектора. Возвращает вектор созданных экземпляров с заполненными полями Id и т.п. |
<класс>RemoteLoad (string token.Key, string id) | <класс> | Возвращает экземпляр <класс> загруженный по идентификатору id. |
<класс>RemoteStore (string token.Key, string id, <класс> object) | Сохраняет атрибуты экземпляра <класс> идентифицируемого по id. | |
<класс>RemoteStoreBatch (string token.Key, <класс>[] objects) | Сохраняет атрибуты экземпляров типа <класс>, идентифицируемых значениями атрибутов Id. | |
<класс>RemoteDelete (string token.Key, string id) | Удаляет экземпляр <класс> идентифицируемый по id. | |
<класс>RemoteDeleteBatch (string token.Key, <класс>[] objects) | Удаляет экземпляры типа <класс>, идентифицируемых значениями атрибутов Id. | |
<класс>RemoteGetAll (string token.Key) | <класс>[] | Возвращает все сохраненные экземпляры <класс> в виде массива объектов. |
<класс>RemoteFind (string token.Key, <класс> object) | <класс>[] | Выполняет поиск объектов по точному совпадению значений атрибутов object. Например, для поиска по названию, необходимо задать значение атрибута object.Caption и т.д. В результате возвращается массив экземпляров <класс>, удовлетворяющих критериям поиска |
Классы
Название | Атрибут | Назначение |
task | Id | Идентификатор объекта |
Caption | Заголовок задачи | |
Priority | Идентификатор приоритета (ссылка на priority) | |
TaskType | Идентификатор типа задачи (ссылка на tasktype) | |
Release | Идентификатор итерации (спринта), в которую включена задачи (ссылка на iteration) | |
State | Текстовое значение текущего состояния задачи, например, submitted или resolved | |
Assignee | Идентификатор исполнителя (ссылка на paticipant) | |
ChangeRequest | Идентификатор исходного пожелания (ссылка на request) | |
Planned | Плановая трудоемкость по задаче в часах | |
LeftWork | Оставшаяся трудоемкость по задаче в часах | |
Fact | Фактически затраченное время на задачу в часах | |
Comments | Комментарий к задаче | |
RecordCreated | Дата и время создания задачи | |
RecordModified | Дата и время последней модификации задачи | |
Result | Текстовое значение результата выполнения задачи | |
priority | Id | Идентификатор объекта |
Caption | Отображаемое название приоритета | |
tasktype | Id | Идентификатор объекта |
Caption | Отображаемое название типа задачи | |
ReferenceName | Кодовое имя типа задачи, например, testdesign | |
iteration | Id | Идентификатор объекта |
ReleaseNumber | Отображаемое название итерации | |
StartDate | Дата начала итерации | |
StartDate | Дата окончания итерации | |
IsActual | Признак актуальности итерации, "N" - итерация устарела | |
InitialVelocity | Начальная скорость команды для данной итерации | |
RecordCreated | Дата и время создания итерации | |
RecordModified | Дата и время последней модификации итерации | |
participant | Id | Идентификатор объекта |
Caption | Отображаемое имя участника проекта | |
Адрес электронной почты участника (readonly) | ||
Login | Системное имя участника (readonly) | |
SystemUser | Идентификатор пользователя в системе (ссылка на user) | |
request | Id | Идентификатор объекта |
Caption | Отображаемое имя пожелания (или истории пользователя) | |
requirement | Id | Идентификатор объекта |
Caption | Отображаемое имя раздела требования | |
ParentPage | Ссылка на объект типа requirement, являющийся родительской страницей | |
PageType | Ссылка на объект типа wikipagetype, определяющий тип раздела требований | |
Content | Содержимое раздела требований |
Примеры (C#)
// авторизуемся в проекте
security.SecurityService api = new security.SecurityService() {
Url = 'http://projectscloud.ru/api/securityservice'
};
data.DataService _dataService = new data.DataService() {
Url = 'http://projectscloud.ru/api/dataservice'
};
security.Token _token = api.login("guest", "guest", "development");
data.participant[] participants = _dataService.participantRemoteFind(
_token.Key, new data.participant() { Caption = "Ivan Ivanovich" } );


