· 6 years ago · Feb 12, 2020, 02:04 PM
1swagger: '2.0'
2info:
3 description: Jarvis API
4 version: 1.0.0
5 title: Jarvis API
6host: jarvis.surfstudio.ru
7basePath: /api/v1
8schemes:
9- http
10
11securityDefinitions:
12 SecurityToken:
13 type: apiKey
14 in: query
15 name: authToken
16
17paths:
18 /message/:
19 post:
20 summary: Отправка сообщения пользователю в slack
21 description: Можно использовать в скриптах для персонального уведомления
22 produces:
23 - application/json
24 parameters:
25 - in: body
26 name: message
27 required: true
28 schema:
29 $ref: '#/definitions/Message'
30 responses:
31 204:
32 description: Сообщение отправлено (или отправлена celery task)
33 404:
34 description: Пользователя с указанным id не существует
35 schema:
36 $ref: '#/definitions/HipchatError'
37 400:
38 description: Невалидные данные
39 schema:
40 $ref: '#/definitions/ValidationError'
41 /notification/:
42 post:
43 summary: Отправка уведомления в канал Slack
44 description: Используется для уведомления в группы проектов (i.e. через Jenkins)
45 produces:
46 - application/json
47 parameters:
48 - in: body
49 name: message
50 required: true
51 schema:
52 $ref: '#/definitions/Notification'
53 responses:
54 204:
55 description: Сообщение отправлено (или отправлена celery task)
56 404:
57 description: Пользователя с указанным id не существует
58 schema:
59 $ref: '#/definitions/HipchatError'
60 /repositories/branches/default/:
61 get:
62 summary: получить мастер ветку
63 description:
64 Получить по URL мастер ветку в репозитории
65 parameters:
66 - name: repo_url
67 in: query
68 type: string
69 required: true
70 description: URL на репозиторий
71 responses:
72 200:
73 description: Main branch
74 schema:
75 $ref: '#/definitions/MainBranch'
76 /webhooks/version/:
77 post:
78 description: Вебхук для создания версии в Jira и оповещения, так же переводит задачи из статуса feedback в approved
79 produces:
80 - application/json
81 parameters:
82 - in: body
83 name: body
84 required: true
85 schema:
86 $ref: '#/definitions/BuildStatusWebhookPayload'
87 responses:
88 202:
89 description: Сообщение отправлено (или отправлена celery task)
90 400:
91 description: Не указано поле result в build
92 schema:
93 $ref: '#/definitions/WebhookError'
94 /webhooks/start-sprint/:
95 post:
96 summary: Вебхук для уведомления о начале спринта
97 description: Передается параметр sprint_id, с помощью этого параметра выясняется, в какой канал нужно отправлять уведомление
98 produces:
99 - application/json
100 parameters:
101 - in: body
102 name: body
103 required: true
104 schema:
105 $ref: '#/definitions/StartSprintWebhookPayload'
106 responses:
107 202:
108 description: Сообщение отправлено (или отправлена celery task)
109
110 /webhooks/bitbucket/pr/change/:
111 post:
112 description: |
113 Проверяет, что задача, связанная с source-веткой PR имеет исполнителя и оценку. Если все нормально - дергает targetUrl с тем же телом, что пришло в запросе. Если нет - отклоняет PR и отправляет сообщение создателю PR в Slack.
114 parameters:
115 - in: query
116 name: targetUrl
117 type: string
118 required: false
119 description: Url, на который будет проксирован запрос в случае, если PR проверен успешно
120 responses:
121 202:
122 description: Обработка запущена
123 201:
124 description: Имя ветки не содержит id задачи
125 /webhooks/jira/create-branch/:
126 post:
127 summary: deprecated
128 description: |
129 Создает новую ветку в репозитории проекта с именем
130 'dev/sprint-{sprint_number} при создании спринта. Если спринт уже есть в базе
131 то обновляется только его имя.
132 parameters:
133 - in: query
134 name: user_id
135 type: string
136 required: true
137 description: Отправляется жирой
138 - in: body
139 name: body
140 required: true
141 schema:
142 $ref: '#/definitions/CreateBranchWebhookBody'
143 responses:
144 202:
145 description: Таска создана
146 deprecated: true
147 /webhooks/gitlab/check-mrs/:
148 post:
149 summary: Обработчик события Push на стороне Gitlab.
150 parameters:
151 - in: query
152 name: targetUrl
153 type: string
154 required: false
155 description: Url, на который будет проксирован запрос в случае, если Push проверен успешно
156 responses:
157 202:
158 description: Обработка запущена
159 204:
160 description: В данных нет имени ветки
161 /webhooks/gitlab/mr/event/:
162 post:
163 summary: Обработчик события Merge Request на стороне Gitlab.
164 description: |
165 Проверяет, что задача, связанная с source-веткой PR имеет исполнителя и оценку. Если все нормально - дергает targetUrl с тем же телом, что пришло в запросе. Если нет - отклоняет PR и отправляет сообщение создателю PR в Slack. Проверяет событие, в случае нового MR отправляет сообщение ревьюверу, при закрытии созданного отправляет сообщение автору.
166 security:
167 - SecurityToken: []
168 parameters:
169 - in: query
170 name: targetUrl
171 type: string
172 required: false
173 description: Url, на который будет проксирован запрос в случае, если PR проверен успешно
174 responses:
175 202:
176 description: Обработка запущена
177 204:
178 description: Не указан проверяющий у открытого MR
179 404:
180 description: Отсутствуют данные или ветки не отличаются
181 /webhooks/gitlab/mr/new/:
182 post:
183 summary: Обработчик перевода связанной задачи Jira в статус Code Review при событии New Merge Request
184 responses:
185 202:
186 description: Перевод запущен
187 400:
188 description: Событие не совпадает с правилом перевода
189 /webhooks/gitlab/mr/merged/:
190 post:
191 summary: Обработчик перевода связанной задачи Jira в статус Approved при событии Merged Merge Request
192 responses:
193 202:
194 description: Перевод запущен
195 400:
196 description: Событие не совпадает с правилом перевода
197 /webhooks/gitlab/mr/closed/:
198 post:
199 summary: Обработчик перевода связанной задачи Jira в статус Rejected при событии Closed Merge Request
200 responses:
201 202:
202 description: Перевод запущен
203 400:
204 description: Событие не совпадает с правилом перевода
205 /issues/change-status/:
206 post:
207 summary: Изменить статус у задачи
208 description: Изменение статуса у задачи в Jira
209 parameters:
210 - in: body
211 name: body
212 required: true
213 schema:
214 $ref: '#/definitions/ChangeTaskStatusRequest'
215 responses:
216 204:
217 description: OK
218 404:
219 description: Подходящий transition для
220 перемещения задачи не найден
221 schema:
222 type: object
223 properties:
224 message:
225 type: string
226 example: Suitable transition not found.
227 /report/preload_issues/:
228 get:
229 summary: загрузка данных для отчета
230 description: Перед тем как формировать остальные отчеты, нужно предварительно загрузить из jira и положить их в кэш
231 parameters:
232 - name: jql
233 type: string
234 required: true
235 in: query
236 description: jql запрос, во всех остальных запросах нужно подставлять этот jql
237 #example: 'project=test and sprint=2'
238 - name: enableCache
239 type: string
240 in: query
241 description: загузить новый кеш или использовать уже загруженные данные если они есть
242 #example: enableCache=yes|no
243 - name: authToken
244 type: string
245 required: false
246 in: query
247 description: токен для авторизации запроса, если пользователь авторизован в jarvis, токен не нужен
248 responses:
249 200:
250 description: successful operation
251 400:
252 description: Invalid status value
253 schema:
254 $ref: '#/definitions/ErrorMessage'
255 403:
256 description: Auth error
257
258 /report/preload_epics/:
259 get:
260 summary: предварительная загрузка данных для отчета
261 description: Перед тем как формировать остальные отчеты, нужно предварительно загрузить из jira и положить их в кеш, данный кеш нужен для отчетов по багам пользователя
262 parameters:
263 - name: jql
264 type: string
265 required: true
266 in: query
267 description: jql запрос, во всех остальных запросах нужно подставлять этот jql
268 #example: 'project=test and sprint=2'
269 - name: enableCache
270 type: string
271 in: query
272 description: загузить новый кеш или использовать уже загруженные данные если они есть
273 #example: enableCache=yes|no
274 - name: authToken
275 type: string
276 required: false
277 in: query
278 description: токен для атворизации запроса, если пользователь авторизован в jarvis, токен не нужен
279 responses:
280 200:
281 description: successful operation
282 400:
283 description: Invalid status value
284 schema:
285 $ref: '#/definitions/ErrorMessage'
286 403:
287 description: Auth error
288
289 /report/summary/:
290 get:
291 summary: сумарный отчет по задачам
292 description: форм
293 parameters:
294 - name: jql
295 type: string
296 required: true
297 in: query
298 description: jql запрос
299 #example: 'project=test and sprint=2'
300 - name: groupby
301 type: string
302 in: query
303 description: группировка отчета, может быть epics assignees sprints projects; example groupby=sprints
304 #example: ivanov
305 - name: query
306 type: string
307 in: query
308 description: дополнительные фильтры; example query=customfield_10008=="Документация"
309 required: false
310 - name: authToken
311 type: string
312 required: false
313 in: query
314 description: токен для авторизации запроса, если пользователь авторизован в jarvis, токен не нужен
315
316 responses:
317 200:
318 description: successful operation
319 schema:
320 $ref: '#/definitions/SummaryReport'
321 400:
322 description: Invalid status value
323 schema:
324 $ref: '#/definitions/ErrorMessage'
325 403:
326 description: Auth error
327
328 /report/overview/:
329 get:
330 summary: сумарный отчет по задачам
331 description: форм
332 parameters:
333 - name: jql
334 type: string
335 required: true
336 in: query
337 description: jql запрос
338 #example: 'project=test and sprint=2'
339 - name: groupby
340 type: string
341 in: query
342 description: группировка отчета, может быть epics assignees sprints projects; example groupby=sprints
343 #example: ivanov
344 required: false
345 - name: query
346 type: string
347 in: query
348 description: дополнительные фильтры; example query=customfield_10008=="Документация"
349 required: false
350 #example: ivanov
351 - name: authToken
352 type: string
353 required: false
354 in: query
355 description: токен для авторизации запроса, если пользователь авторизован в jarvis токен не нужен
356 responses:
357 200:
358 description: successful operation
359 schema:
360 $ref: '#/definitions/Overview'
361 400:
362 description: Invalid status value
363 schema:
364 $ref: '#/definitions/ErrorMessage'
365 403:
366 description: Auth error
367
368 /report/user_bug_info/:
369 get:
370 summary: запрос отчета
371 description: Баги пользователей
372 parameters:
373 - name: jql
374 type: string
375 required: true
376 in: query
377 description: jql запрос
378 #example: 'project=test and sprint=2'
379 - name: assigneename
380 type: string
381 in: query
382 description: исполнитель, example assigneename="ivanov,petrov"
383 #example: ivanov
384 - name: authToken
385 type: string
386 required: false
387 in: query
388 description: токен для атворизации запроса
389 responses:
390 200:
391 description: successful operation
392 schema:
393 $ref: '#/definitions/BugPesent'
394 400:
395 description: Invalid status value
396 schema:
397 $ref: '#/definitions/ErrorMessage'
398 403:
399 description: Auth error
400 /report/accuracy/:
401 get:
402 summary: запрос отчета
403 description: перед этим запросом нужно отправить запрос на заполнение кеша
404 parameters:
405 - name: jql
406 type: string
407 required: true
408 in: query
409 description: jql запрос
410 #example: 'project=test and sprint=2'
411 - name: groupby
412 type: string
413 in: query
414 description: сортировка
415 required: true
416 #example: assignees
417 - name: query
418 type: string
419 in: query
420 required: true
421 description: фильтр
422 #example: assigneename=="ivanov"
423 - name: authToken
424 type: string
425 required: false
426 in: query
427 description: токен для авторизации запроса
428 responses:
429 200:
430 description: successful operation
431 schema:
432 $ref: '#/definitions/Accuracy'
433 400:
434 description: Invalid status value
435 schema:
436 $ref: '#/definitions/ErrorMessage'
437 403:
438 description: Auth error
439
440 /report/bug_pesent/:
441 get:
442 summary: запрос отчета
443 description: Сколько багов сгенерировал разработчик
444 parameters:
445 - name: jql
446 type: string
447 required: true
448 in: query
449 description: jql запрос
450 - name: query
451 type: string
452 in: query
453 description: дополнительные фильтры; example query=customfield_10008=="Документация"
454 required: false
455 #example: ivanov
456 - name: groupby
457 type: string
458 in: query
459 description: группировка отчета, может быть epics assignees sprints projects; example groupby=sprints
460 #example: ivanov
461 required: false
462 - name: authToken
463 type: string
464 required: true
465 in: query
466 description: токен для авторизации запроса
467 responses:
468 200:
469 description: successful operation
470 schema:
471 $ref: '#/definitions/BugPesent'
472 400:
473 description: Invalid status value
474 schema:
475 $ref: '#/definitions/ErrorMessage'
476 403:
477 description: Auth error
478
479
480 /report/problems_issue/:
481 get:
482 summary: запрос отечета
483 description: Проблемные задачи
484 parameters:
485 - name: jql
486 type: string
487 required: true
488 in: query
489 description: jql запрос
490 - name: query
491 type: string
492 in: query
493 description: дополнительные фильтры; example query=customfield_10008=="Документация"
494 required: false
495 #example: ivanov
496 - name: authToken
497 type: string
498 required: true
499 in: query
500 description: токен для авторизации запроса
501 responses:
502 200:
503 description: successful operation
504 schema:
505 $ref: '#/definitions/ProblemIssues'
506 400:
507 description: Invalid status value
508 schema:
509 $ref: '#/definitions/ErrorMessage'
510 403:
511 description: Auth error
512
513 /analytics/buildinfo/:
514 get:
515 summary: получить статистику по build
516 parameters:
517 - name: authToken
518 type: string
519 required: true
520 in: query
521 description: токен для авторизации запроса
522 - name: post_stamp
523 type: string
524 required: false
525 in: query
526 description: указать точное время пример post_stamp=2019-05-01
527 - name: stamp_gte
528 type: string
529 required: false
530 in: query
531 description: дата вставки больше чем(включительно) пример stamp_gte=2019-05-01
532 - name: stamp_lte
533 type: string
534 required: false
535 in: query
536 description: дата вставки меньше чем(включительно) пример stamp_lte=2019-05-01
537 - name: id
538 type: number
539 required: false
540 in: query
541 description: id равно
542 - name: id_lte
543 type: number
544 required: false
545 in: query
546 description: id записи меньше чем(включительно)
547 - name: id_gte
548 type: number
549 required: false
550 in: query
551 description: id записи больше чем(включительно)
552 responses:
553 200:
554 description: successful operation
555 schema:
556 $ref: '#/definitions/ListBuildInfo'
557 post:
558 summary: вставить статистку
559 parameters:
560 - name: authToken
561 type: string
562 required: true
563 in: query
564 description: токен для авторизации запроса
565 - in: body
566 name: info
567 required: true
568 schema:
569 $ref: '#/definitions/BuildInfoPost'
570 responses:
571 200:
572 description: successful operation
573 schema:
574 $ref: '#/definitions/BuildInfo'
575 /jarvis/account/:
576 post:
577 summary: Создать новый аккаунт в базе Jarvis
578 parameters:
579 - name: body
580 in: body
581 schema:
582 $ref: '#/definitions/CreateAccountBody'
583 - name: authToken
584 type: string
585 in: query
586 required: true
587 description: Токен для авторизации запроса
588 responses:
589 201:
590 description: Пользователь создан
591 schema:
592 $ref: '#/definitions/CreateAccountResponse'
593 409:
594 description: Пользователь существует
595 schema:
596 $ref: '#/definitions/CreateAccountResponse'
597
598definitions:
599 CreateAccountResponse:
600 type: object
601 properties:
602 status:
603 type: string
604 data:
605 type: string
606
607 CreateAccountBody:
608 type: object
609 required:
610 - first_name
611 - last_name
612 - email
613 - jira_username
614 properties:
615 first_name:
616 type: string
617 last_name:
618 type: string
619 email:
620 type: string
621 jira_username:
622 type: string
623 bitbucket_username:
624 type: string
625 gitlab_username:
626 type: string
627 atlassian_id:
628 type: string
629 slack_user_id:
630 type: string
631
632 StartSprintWebhookPayload:
633 type: object
634 properties:
635 id:
636 type: integer
637 description: id спринта
638 name:
639 type: string
640 description: наименование спринта
641 end_date:
642 type: string
643 description: время окончания спринта
644
645 BuildInfo:
646 type: object
647 properties:
648 id:
649 type: number
650 description: id записи
651 postStamp:
652 description: время вставки записи
653 type: string
654 info:
655 type: object
656 description: информация по билду
657
658 BuildInfoPost:
659 type: object
660 properties:
661 info:
662 description: информация о Build в формате json
663 type: object
664
665 ListBuildInfo:
666 type: array
667 items:
668 $ref: '#/definitions/BuildInfo'
669
670 ProblemIssues:
671 description: Список проблемных задач, задачи, по которым неверно оценили время
672 type: array
673 items:
674 type: object
675 properties:
676 name:
677 type: string
678 val:
679 type: object
680 properties:
681 key:
682 description: идентификатор задачи
683 type: string
684 summary:
685 description: наименование задачи
686 type: string
687 estimation:
688 description: Предварительный расчет времени выполнения задачи
689 type: integer
690 accuracy:
691 description: Попадание в оценку(estimation/duration)
692 type: number
693 editRemaining:
694 description: Изменялось ли заложенное время
695 type: boolean
696 overtime:
697 description: флаг, с помощью которого можно определить, недооценнный или переоцененный
698 type: boolean
699 worklog:
700 type: array
701 description: Рабочая активность, список отметок исполнителей
702 items:
703 type: object
704 properties:
705 fullname:
706 description: Полное имя сотрудника
707 type: string
708 created:
709 description: Время создания комментария
710 type: string
711 timeSpent:
712 description: затреканное время
713 type: integer
714 comment:
715 description: комментарий к выполнению
716 type: string
717
718 SummaryReport:
719 description: Суммарный отчет по задачам
720 type: array
721 items:
722 type: object
723 properties:
724 name:
725 type: string
726 description: Значение, по которому формируется отчет (сотрудник, эпик, проект)
727 val:
728 type: object
729 description: значение отчета
730 properties:
731 max:
732 type: integer
733 description: максимальное значение в отчете,
734 либо сумма (timeBug, timeTask, timeServiceTask, remainingEstimate)
735 либо timeoriginalestimateTask
736 remainingEstimate:
737 type: integer
738 description: pass
739 timeBug:
740 type: integer
741 description: время, затраченное на баги
742 timeTask:
743 type: integer
744 description: время, затраченное на обычные таски
745 timeServiceTask:
746 type: integer
747 description: pass
748 timeoriginalestimateTask:
749 type: integer
750 description: pass
751
752 Overview:
753 description: Обзорный отчет по задач
754 type: array
755 items:
756 type: object
757 properties:
758 name:
759 type: string
760 description: Информация, по которой формируется отчет (эпик, проект, спринт, Задачи, Исполнители)
761 val:
762 type: object
763 description: pass
764 properties:
765 timeSpent:
766 type: integer
767 description: затреканное время
768
769 Accuracy:
770 description: Точность попадания в оценки
771 type: array
772 items:
773 type: object
774 properties:
775 name:
776 type: string
777 description: Информация, по которой формируется отчет (Эпик, проект, спринт, Задачи, Исполнители)
778 val:
779 type: object
780 description: pass
781 properties:
782 percent:
783 type: number
784 description: процент попадания в оценки
785
786 BugPesent:
787 description: Процент свой отладки
788 type: array
789 items:
790 type: object
791 properties:
792 name:
793 type: string
794 description: Информация, по которой формируется отчет(Эпик, проект, спринт, Задачи, Исполнители)
795 val:
796 type: object
797 description: pass
798 properties:
799 percent:
800 type: number
801 description: процент попадания в оценки
802
803
804 ErrorMessage:
805 type: object
806 properties:
807 status:
808 type: string
809 example: 'error'
810 message:
811 type: string
812 example: 'no valid jql'
813
814
815 Message:
816 description: уведомление сотрудников Surf, занеcенных в jarvis
817 type: object
818 required:
819 - message
820 - id_or_name
821 properties:
822 id_or_name:
823 type: string
824 example: jarvis@surfstudio.co
825 description: если id_type=bitbucket, то atlassian_id/bibucket_username, если id_type=email - то email
826 message:
827 type: string
828 example: Hello World
829 message_format:
830 type: string
831 example: text
832 description: Формат сообщения [html, text]
833 notify:
834 type: boolean
835 example: True
836 description: Должно ли это сообщение инициировать уведомление пользователя, не реализовано
837 id_type:
838 type: boolean
839 example: hipchat
840 description: Тип id, доступны [bitbucket, email]
841 as_task:
842 type: boolean
843 example: False
844 description: Обернуть запрос в celery task, True по-умолчанию, не реализованно
845
846 Notification:
847 type: object
848 required:
849 - message
850 - id_or_name
851 properties:
852 id_or_name:
853 type: string
854 example: jarvis@surfstudio.co
855 description: если id_type == bitbucket, в переменную нужно передавать адрес репозитория, если slack необходимо передать ID пользователя, hipchat id atlassian id
856 message:
857 type: string
858 example: Hello World
859 message_format:
860 type: string
861 example: text
862 description: Формат сообщения [html, text]
863 notify:
864 type: boolean
865 example: True
866 description: Должно ли это сообщение инициировать уведомление пользователя, не раелизовано
867 id_type:
868 type: string
869 example: bitbucket
870 description: Тип id, доступны [jira, bitbucket]
871 as_task:
872 type: boolean
873 example: False
874 description: Обернуть запрос в celery task, True по-умолчанию, не реализованно
875 sender:
876 type: string
877 example: Jarvis Server
878 description: не реализованно, подставить отправителя
879 color:
880 type: string
881 example: green
882 description: тип сообщения, default='gray', 'gray', 'purple', 'red', 'green', 'yellow', 'random'
883 ValidationError:
884 type: object
885 properties:
886 color:
887 type: array
888 items:
889 type: string
890 example: "'cyan' is not a valid color. Available colors ['yellow', 'purple', 'red', 'green', 'random', 'gray']"
891 message:
892 type: array
893 items:
894 type: string
895 example: This field is required
896 HipchatError:
897 type: object
898 properties:
899 error:
900 type: object
901 properties:
902 code:
903 type: number
904 example: 404
905 message:
906 type: string
907 example: Target user 25366005 is not a valid user
908 type:
909 type: string
910 example: Not found
911 BuildStatusWebhookPayload:
912 type: object
913 required:
914 - repo_url
915 - tag_name
916 - build
917 - ci_url
918 properties:
919 build:
920 type: object
921 properties:
922 job_name:
923 type: string
924 example: 3242
925 number:
926 type: number
927 example: 12
928 status:
929 type: string
930 example: FAILURE
931 stages_result:
932 type: array
933 items:
934 type: object
935 properties:
936 name:
937 type: string
938 example: linter
939 status:
940 type: string
941 example: SUCCESS
942 repo_url:
943 type: string
944 example: https://bitbucket.org/surfstudio/test-jira
945 ci_url:
946 type: string
947 example: http://jenkins.surfstudio.ru
948 tag_name:
949 type: string
950 example: 1.2.3-rc3
951 message:
952 type: string
953 example: Hello World
954 WebhookError:
955 type: object
956 properties:
957 result:
958 type: array
959 items:
960 type: string
961 example: This field is requred.
962 MainBranch:
963 type: object
964 properties:
965 name:
966 type: string
967 example: dev/sprint-1
968 ChangeTaskStatusRequest:
969 type: object
970 required:
971 - status_name
972 - issue_key
973 properties:
974 status_name:
975 type: string
976 example: In Progress
977 description: case insensetive поле
978 issue_key:
979 type: string
980 example: TEST-3
981 CreateBranchWebhookBody:
982 type: object
983 properties:
984 timestamp:
985 type: number
986 example: 1523641146036
987 webhook_event:
988 type: string
989 example: sprint_updated
990 sprint:
991 type: object
992 properties:
993 id:
994 type: integer
995 example: 58
996 self:
997 type: string
998 example: 'https://jira.surfstudio.ru/rest/agile/1.0/sprint/158'
999 state:
1000 type: string
1001 example: active
1002 name:
1003 type: string
1004 example: JARVIS 23 CoolSprint
1005 start_date:
1006 type: string
1007 example: '2018-04-11T18:15:56.434+03:00'
1008 end_date:
1009 type: string
1010 example: '2018-04-25T18:15:00.000+03:00'
1011 origin_board_id:
1012 type: integer
1013 example: 84
1014 goal:
1015 type: string
1016 example: asd
1017 old_value:
1018 type: object
1019 properties:
1020 id:
1021 type: integer
1022 example: 158
1023 self:
1024 type: string
1025 example: 'https://jira.surfstudio.ru/rest/agile/1.0/sprint/158'
1026 state:
1027 type: string
1028 example: active
1029 name:
1030 type: string
1031 example: '2333'
1032 start_date:
1033 type: string
1034 example: '2018-04-11T18:15:56.434+03:00'
1035 end_date:
1036 type: string
1037 example: '2018-04-25T18:15:00.000+03:00'
1038 origin_board_id:
1039 type: integer
1040 example: 84
1041 goal:
1042 type: string
1043 example: asd