====== Air Lay API v4======
===== Navigation =====
* [[ru:first|Главная]]
* [[ru:dsp:first|Web]]
* [[ru:dsp:airlay:api|API]]
* [[ru:dsp:api:air-lay|API Air Lay]]
* [[ru:airlay:examples|Примеры данных]]
----
=====Описание=====
Раздел в процессе разработки
==== Структура запроса ====
/**
* Desctiprion - описание Action
* request([
* "method" => "тип метода",
* "url" => "api/v4/controllerName/actionName", - адрес запроса
* (полный путь "api/v4/controllerNameComtroller/actionNameAction")
'file' => 'описание содержимого файла в случае передачи файлом'
* 'params' => [
* [
* 'name' => 'Имя параметра',
* 'type' => 'Тип параметра',
* 'description' => 'Описание параметра',
* 'required' => 'Флаг обязателен параметр или нет'
* ],
* ...
* ] - Параметры в случае передачи через параметры
* ]) - Передаваемые в Action значения
* response([
* "status" => 'Статус код ответа',
* "message" => 'Сообщение ответа',
* "code" => 'код ответа'
* ]) - Возвращаемое значение после выполнения Action
* @throws - ошибки которые могут возникать в ходе работы
*
* @Authorization - флаг необходимости авторизации
*/
=====Контроллеры=====
==== Label====
=== getAction ===
/**
* Get labels
* request([
* 'method' => 'GET',
* 'url' => '/api/v4/label/get'
* 'params' => [
* [
* 'name' => 'type',
* 'type' => 'string',
* 'description' => 'label type',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => LabelsEntity[],
* 'code' => 0
* ])
*
* @Authorization(['CmsUser', 'User'])
*
* @throws AirlayException
*/
=== createAction ===
/**
* Create label
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/label/create'
* 'params' => [
* [
* 'name' => 'name',
* 'type' => 'string',
* 'description' => 'label name',
* 'required' => true
* ],
* [
* 'name' => 'color',
* 'type' => 'string',
* 'description' => 'label color',
* 'required' => true
* ],
* [
* 'name' => 'type',
* 'type' => 'string',
* 'description' => 'label type',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => LabelEntity,
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== updateAction ===
/**
* Update label
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/label/update'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'ObjectId',
* 'description' => 'label id',
* 'required' => true
* ],
* [
* 'name' => 'name',
* 'type' => 'string'|null,
* 'description' => 'label name',
* 'required' => false
* ],
* [
* 'name' => 'color',
* 'type' => 'string'|null,
* 'description' => 'label color',
* 'required' => false
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => LabelEntity,
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== deleteAction ===
/**
* Delete label
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/label/delete'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'ObjectId',
* 'description' => 'label id',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'Ok',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
==== Issue ====
=== getAction ===
/**
* Get issues
* request([
* 'method' => 'GET',
* 'url' => '/api/v4/issue/get'
* 'params' => [
* [
* 'name' => 'milestoneIds',
* 'type' => 'ObjectId[]',
* 'description' => 'milestones filter',
* 'required' => false
* ],
* [
* 'name' => 'assignIds',
* 'type' => 'ObjectId[]',
* 'description' => 'assigns filter',
* 'required' => false
* ],
* [
* 'name' => 'priorityIds',
* 'type' => 'ObjectId[]',
* 'description' => 'priorities filter',
* 'required' => false
* ],
* [
* 'name' => 'statusId',
* 'type' => 'ObjectId|null',
* 'description' => 'status id',
* 'required' => false
* ],
* [
* 'name' => 'name',
* 'type' => 'string',
* 'description' => 'name starts with',
* 'required' => false
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => IssueEntity[],
* 'code' => 0
* ])
*
* @Authorization(['CmsUser', 'User'])
*/
=== createAction ===
/**
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/create'
* 'params' => [
* [
* 'name' => 'name',
* 'type' => 'string',
* 'description' => 'issue name',
* 'required' => true
* ],
* [
* 'name' => 'description',
* 'type' => 'string',
* 'description' => 'issue description',
* 'required' => false
* ],
* [
* 'name' => 'assignId',
* 'type' => 'objectId|null',
* 'description' => 'issue assign user id',
* 'required' => false
* ],
* [
* 'name' => 'priorityId',
* 'type' => 'objectId'|null,
* 'description' => 'priority id',
* 'required' => false
* ],,
* [
* 'name' => 'statusId',
* 'type' => 'objectId'|null,
* 'description' => 'status id',
* 'required' => false
* ],
* [
* 'name' => 'milestoneId',
* 'type' => 'objectId'|null,
* 'description' => 'milestone id',
* 'required' => false
* ],
* [
* 'name' => 'endDate',
* 'type' => 'int'|null,
* 'description' => 'close date',
* 'required' => false
* ],
* [
* 'name' => 'spentTime',
* 'type' => 'int'|null,
* 'description' => 'spent time',
* 'required' => false
* ],
* [
* 'name' => 'estimatedTime',
* 'type' => 'int'|null,
* 'description' => 'estimated time',
* 'required' => false
* ],
* [
* 'name' => 'progress',
* 'type' => 'int'|null,
* 'description' => 'percentage of issue completed',
* 'required' => false
* ],
* [
* 'name' => 'parents',
* 'type' => 'ObjectId[]',
* 'description' => 'parent issue ids',
* 'required' => false
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => IssueEntity,
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== updateAction ===
/**
* Update issue
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/update'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ],
* [
* 'name' => 'name',
* 'type' => 'string',
* 'description' => 'issue name',
* 'required' => true
* ],
* [
* 'name' => 'statusId',
* 'type' => 'objectId'|null,
* 'description' => 'status id',
* 'required' => false
* ],
* [
* 'name' => 'description',
* 'type' => 'string',
* 'description' => 'issue description',
* 'required' => false
* ],
* [
* 'name' => 'assignId',
* 'type' => 'objectId|null',
* 'description' => 'issue assign user id',
* 'required' => false
* ],
* [
* 'name' => 'priorityId',
* 'type' => 'objectId'|null,
* 'description' => 'priority id',
* 'required' => false
* ],
* [
* 'name' => 'milestoneId',
* 'type' => 'objectId'|null,
* 'description' => 'milestone id',
* 'required' => false
* ],
* [
* 'name' => 'endDate',
* 'type' => 'int'|null,
* 'description' => 'close date',
* 'required' => false
* ],
* [
* 'name' => 'spentTime',
* 'type' => 'int'|null,
* 'description' => 'spent time',
* 'required' => false
* ],
* [
* 'name' => 'estimatedTime',
* 'type' => 'int'|null,
* 'description' => 'estimated time',
* 'required' => false
* ],
* [
* 'name' => 'progress',
* 'type' => 'int'|null,
* 'description' => 'percentage of issue completed',
* 'required' => false
* ],
* [
* 'name' => 'parents',
* 'type' => 'ObjectId[]',
* 'description' => 'parent issue ids',
* 'required' => false
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => IssueEntity,
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== deleteAction ===
/**
* Delete issue
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/delete'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'OK',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== addObserverAction ===
/**
* Add observer
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/addObserver'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ],
* [
* 'name' => 'type',
* 'type' => 'string' ('user' | 'organization' | 'group' | 'department'),
* 'description' => 'type of observer',
* 'required' => true
* ],
* [
* 'name' => 'observerId',
* 'type' => 'objectId',
* 'description' => 'observers id',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'OK',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== removeObserverAction ===
/**
* Remove observer
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/removeObserver'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ],
* [
* 'name' => 'observerId',
* 'type' => 'objectId',
* 'description' => 'observers id',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'OK',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== getCommentsAction ===
/**
* Get issue comments
* request(
* 'method' => 'GET',
* 'url' => '/api/v4/issue/getComments',
* 'params' => [
* [
* 'name' => 'issueId',
* 'type' => 'ObjectId',
* 'required' => true,
* 'description' => 'Issue id'
* ],
* [
* 'name' => 'skip',
* 'type' => 'int',
* 'required' => false,
* 'description' => 'Skip comments in result'
* ],
* [
* 'name' => 'limit',
* 'type' => 'int',
* 'required' => false,
* 'description' => 'Limit comments in result'
* ]
* ]
* )
* response(
* '200' => [
* 'status' => 200,
* 'message' => CommentEntity[]
* 'code' => 0
* ]
* )
*
* @throws AirlayException
*
* @Authorization
*/
=== addCommentAction ===
/**
* Add new comment to issue.
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/addComment'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'Issue id',
* 'required' => true
* ],
* [
* 'name' => 'text',
* 'type' => 'string',
* 'description' => 'comments text',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'CommentEntity',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization
*/
=== updateCommentAction ===
/**
* Update comment.
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/updateComment'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'Comment id',
* 'required' => true
* ],
* [
* 'name' => 'text',
* 'type' => 'string',
* 'description' => 'Comment text',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'CommentEntity',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization
*/
=== removeCommentAction ===
/**
* Remove comment from issue.
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/removeComment'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'Comment id',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'Ok',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization
*/
=== addRelatedObjectAction ===
/**
* Add related object.
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/addRelatedObject'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ],
* [
* 'name' => 'relatedObject',
* 'type' => 'json',
* 'description' => 'related object content',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'OK',
* 'code' => 0
* ])
* @throws AirlayException
* @Authorization
*/
=== removeRelatedObjectAction ===
/**
* Remove related object.
* request([
* 'method' => 'POST',
* 'url' => '/api/v4/issue/removeRelatedObject'
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'issue id',
* 'required' => true
* ],
* [
* 'name' => 'index',
* 'type' => 'int',
* 'description' => 'number of object to remove',
* 'required' => true
* ]
* ]
* ])
* response([
* 'status' => 200,
* 'message' => 'OK',
* 'code' => 0
* ])
*
* @throws AirlayException
*
* @Authorization
*/
==== Milestone ====
=== getAction ===
/**
* Get milestones.
* request([
* 'method' => 'GET',
* 'url' => '/api/v4/milestone/get',
* 'params' => [
* [
* 'name' => 'status',
* 'type' => 'string',
* 'required' => false
* ],
* [
* 'name' => 'name',
* 'type' => 'string',
* 'required' => false
* ]
* ]
* ])
* response([
* 'status' => 'OK',
* 'message' => MilestoneEntity[]
* 'code' => 0
* ])
* @Authorization('CmsUser', 'User')
*/
=== createAction ===
/**
* Create milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/create",
* "params" => [
* [
* 'name' => 'name',
* 'type' => 'string',
* 'description' => 'Milestone name',
* 'required' => true
* ],
* [
* 'name' => 'description',
* 'type' => 'string' | 'null',
* 'description' => 'Milestone description',
* 'required' => false
* ],
* [
* 'name' => 'startDate',
* 'type' => 'int' | 'null',
* 'description' => 'Milestone start date',
* 'required' => false
* ],
* [
* 'name' => 'endDate',
* 'type' => 'int' | 'null',
* 'description' => 'Milestone end date',
* 'required' => false
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => MilestoneEntity
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== updateAction ===
/**
* Update milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/update",
* "params" => [
* [
* 'name' => 'id',
* 'type' => 'ObjectId',
* 'description' => 'Milestone id',
* 'required' => true
* ],
* [
* 'name' => 'name',
* 'type' => 'string' | 'null',
* 'description' => 'Milestone name',
* 'required' => false
* ],
* [
* 'name' => 'description',
* 'type' => 'string' | 'null',
* 'description' => 'Milestone description',
* 'required' => false
* ],
* [
* 'name' => 'startDate',
* 'type' => 'int' | 'null',
* 'description' => 'Milestone start date',
* 'required' => false
* ],
* [
* 'name' => 'endDate',
* 'type' => 'int' | 'null',
* 'description' => 'Milestone end date',
* 'required' => false
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => MilestoneEntity
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== deleteAction ===
/**
* Delete milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/delete",
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'milestone id',
* 'required' => true
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => Ok
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== closeMilestoneAction ===
/**
* Close milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/closeMilestone",
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'milestone id',
* 'required' => true
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => MilestoneEntity
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== addIssuesAction ===
/**
* Add issues to milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/addIssues",
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'milestone id',
* 'required' => true
* ],
* [
* 'name' => 'issues',
* 'type' => 'objectId[]',
* 'description' => 'issues object ids',
* 'required' => true
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => MilestoneEntity
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/
=== removeIssueAction ===
/**
* Remove issue from milestone
* request([
* "method" => "POST",
* "url" => "api/v4/milestone/removeIssue",
* 'params' => [
* [
* 'name' => 'id',
* 'type' => 'objectId',
* 'description' => 'milestone id',
* 'required' => true
* ],
* [
* 'name' => 'issue',
* 'type' => 'objectId',
* 'description' => 'issue object id',
* 'required' => true
* ]
* ]
* ])
* response([
* "status" => 200,
* "message" => MilestoneEntity
* "code" => 0
* ])
* @throws AirlayException
*
* @Authorization('CmsUser')
*/