openapi: 3.0.3
info:
  title: Issues_v2 API
  version: 1.0.0
  description: Sarex Issues_v2
paths:
  /api/attachments/:
    get:
      operationId: api_attachments_list
      description: Получить список всех файлов вложений
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAttachmentReadList'
          description: ''
    post:
      operationId: api_attachments_create
      description: Добавить новый файл
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentWrite'
          description: ''
  /api/attachments/{id}/:
    get:
      operationId: api_attachments_retrieve
      description: Получить конкретный файл по ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Файла вложения.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentRead'
          description: ''
    put:
      operationId: api_attachments_update
      description: Изменить файл
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Файла вложения.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AttachmentWrite'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentWrite'
          description: ''
    patch:
      operationId: api_attachments_partial_update
      description: Изменить файл частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Файла вложения.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAttachmentWrite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedAttachmentWrite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedAttachmentWrite'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentWrite'
          description: ''
    delete:
      operationId: api_attachments_destroy
      description: Удалить файл
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Файла вложения.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '204':
          description: ''
  /api/comments/:
    get:
      operationId: api_comments_list
      description: Получить список существующих комментариев
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCommentReadList'
          description: ''
    post:
      operationId: api_comments_create
      description: Создать комментарий
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CommentCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CommentCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentCreate'
          description: ''
  /api/comments/{id}/:
    get:
      operationId: api_comments_retrieve
      description: Получить комментарий по его ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Комментария.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentRead'
          description: ''
    put:
      operationId: api_comments_update
      description: Изменить комментарий
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Комментария.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CommentCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CommentCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentCreate'
          description: ''
    patch:
      operationId: api_comments_partial_update
      description: Изменить комментарий частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Комментария.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedCommentCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedCommentCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedCommentCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentCreate'
          description: ''
    delete:
      operationId: api_comments_destroy
      description: Удалить комментарий
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) Комментария.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '204':
          description: ''
  /api/companies/{tenant_id}/status-model/:
    get:
      operationId: api_companies_status_model_retrieve
      description: Получить список статусных моделей для данной компании
      parameters:
      - in: path
        name: tenant_id
        schema:
          type: integer
        required: true
        description: ID компании
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: ID статусной модели
                  title:
                    type: string
                    description: Название статусной модели
                  attribute_id:
                    type: integer
                    description: ID атрибута
                  tenant_id:
                    type: integer
                    description: ID компании
                  statuses:
                    type: array
                    description: Статусы
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: ID статуса
                        status_model:
                          type: integer
                          description: ID статусной модели
                        value_option_id:
                          type: integer
                          description: ID опции значения
                        color:
                          type: string
                          description: Цветовой HEX код
                        name:
                          type: string
                          description: Техническое имя статуса
                        label:
                          type: string
                          description: Отображаемое имя статуса
                        transitions:
                          type: object
                          description: Связи с другими статусами
                          properties:
                            inputs:
                              type: array
                              items:
                                type: object
                                properties:
                                  status_id:
                                    type: integer
                                    description: ID входящего статуса
                                  permissions:
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: ID разрешения
                                        service_account_id:
                                          type: integer
                                          description: ID служебного аккаунта
                                        type:
                                          type: string
                                          description: Роль
                            outputs:
                              type: array
                              items:
                                type: object
                                properties:
                                  status_id:
                                    type: integer
                                    description: ID целевого статуса
                                  permissions:
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          description: ID разрешения
                                        service_account_id:
                                          type: integer
                                          description: ID служебного аккаунта
                                        type:
                                          type: string
                                          description: Роль
              example:
                id: 63
                title: "Тестовая статусная модель"
                attribute_id: 1
                tenant_id: 1
                statuses:
                  - id: 1
                    status_model: 63
                    value_option_id: 1
                    color: "#43c079"
                    name: "created"
                    label: "Открыто"
                    transitions:
                      inputs: [ ]
                      outputs:
                        - status_id: 2
                          permissions:
                            - id: 6
                              service_account_id: null
                              type: "admin"
                            - id: 7
                              service_account_id: null
                              type: "author"
                            - id: 8
                              service_account_id: null
                              type: "responsible"
                  - id: 2
                    status_model: 63
                    value_option_id: 1
                    color: "#f0a401"
                    name: "in_progress"
                    label: "В процессе"
                    transitions:
                      inputs:
                        - status_id: 1
                          permissions:
                            - id: 6
                              service_account_id: null
                              type: "admin"
                            - id: 7
                              service_account_id: null
                              type: "author"
                            - id: 8
                              service_account_id: null
                              type: "responsible"
                      outputs:
                        - status_id: 3
                          permissions:
                            - id: 9
                              service_account_id: null
                              type: "admin"
                            - id: 10
                              service_account_id: null
                              type: "author"
                  - id: 3
                    status_model: 63
                    value_option_id: 1
                    color: "#ff5c4a"
                    name: "done"
                    label: "Закрыто"
                    transitions:
                      inputs:
                        - status_id: 2
                          permissions:
                            - id: 9
                              service_account_id: null
                              type: "admin"
                            - id: 10
                              service_account_id: null
                              type: "author"
                      outputs: [ ]
          description: ''
  /api/companies/{tenant_id}/status-model/v2/:
    get:
      operationId: api_companies_status_model_v2_retrieve
      description: Получить список групп статусных моделей для данной компании
      parameters:
      - in: path
        name: tenant_id
        schema:
          type: integer
        required: true
        description: ID компании
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  groups:
                    type: object
                    properties:
                      default_company_statuses:
                        type: array
                        description: Набор статусов по умолчанию
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: ID статуса
                            status_model:
                              type: integer
                              description: Статусная модель
                            value_option_id:
                              type: integer
                              description: ID опции значения
                            color:
                              type: string
                              description: Цветовой HEX код
                            name:
                              type: string
                              description: Техническое имя статуса
                            label:
                              type: string
                              description: Отображаемое имя статуса
                            transitions:
                              type: object
                              description: Связи с другими статусами
                              properties:
                                inputs:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      status_id:
                                        type: integer
                                        description: ID входящего статуса
                                      permissions:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            id:
                                              type: integer
                                              description: ID разрешения
                                            service_account_id:
                                              type: integer
                                              description: ID служебного аккаунта
                                            type:
                                              type: string
                                              description: Роль
                                outputs:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      status_id:
                                        type: integer
                                        description: ID целевого статуса
                                      permissions:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            id:
                                              type: integer
                                              description: ID разрешения
                                            service_account_id:
                                              type: integer
                                              description: ID служебного аккаунта
                                            type:
                                              type: string
                                              description: Роль
                      per_project_statuses:
                        type: object
                        description: Статусы по проекту
                      per_target_statuses:
                        type: object
                        description: Статусы по объекту
                example:
                  groups:
                    default_company_statuses:
                      - id: 3
                        status_model: 63
                        value_option_id: 1
                        color: "#ff5c4a"
                        name: "done"
                        label: "Закрыто"
                        transitions:
                          inputs:
                            - status_id: 2
                              permissions:
                                - id: 9
                                  service_account_id: null
                                  type: "admin"
                                - id: 10
                                  service_account_id: null
                                  type: "author"
                          outputs: [ ]
                      - id: 2
                        status_model: 63
                        value_option_id: 1
                        color: "#f0a401"
                        name: "in_progress"
                        label: "В процессе"
                        transitions:
                          inputs:
                            - status_id: 1
                              permissions:
                                - id: 6
                                  service_account_id: null
                                  type: "admin"
                                - id: 7
                                  service_account_id: null
                                  type: "author"
                                - id: 8
                                  service_account_id: null
                                  type: "responsible"
                          outputs:
                            - status_id: 3
                              permissions:
                                - id: 9
                                  service_account_id: null
                                  type: "admin"
                                - id: 10
                                  service_account_id: null
                                  type: "author"
                      - id: 1
                        status_model: 63
                        value_option_id: 1
                        color: "#43c079"
                        name: "created"
                        label: "Открыто"
                        transitions:
                          inputs: [ ]
                          outputs:
                            - status_id: 2
                              permissions:
                                - id: 6
                                  service_account_id: null
                                  type: "admin"
                                - id: 7
                                  service_account_id: null
                                  type: "author"
                                - id: 8
                                  service_account_id: null
                                  type: "responsible"
  /api/issue-changes/:
    get:
      operationId: api_issue_changes_list
      description: Получить список изменений в замечаниях.
      parameters:
      - in: query
        name: issue_id
        schema:
          type: string
          format: uuid
        description: UUID замечания
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      - in: query
        name: resource_id
        schema:
          type: string
          format: uuid
        description: UUID ресурса (проекта)
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIssueChangeList'
          description: ''
    post:
      operationId: api_issue_changes_create
      description: Создать запись об изменении замечания (происходит автоматически при изменении замечания)
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueChange'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueChange'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueChange'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueChange'
          description: ''
  /api/issue-changes/{id}/:
    get:
      operationId: api_issue_changes_retrieve
      description: Получить запись об изменении замечания по ID.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) изменения в замечании.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueChange'
          description: ''
    put:
      operationId: api_issue_changes_update
      description: Отредактировать запись об изменении замечания
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) изменения в замечании.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueChange'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueChange'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueChange'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueChange'
          description: ''
    patch:
      operationId: api_issue_changes_partial_update
      description: Отредактировать запись об изменении замечания частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) изменения в замечании.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIssueChange'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIssueChange'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIssueChange'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueChange'
          description: ''
    delete:
      operationId: api_issue_changes_destroy
      description: Удалить запись об изменении замечания
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) изменения в замечании.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '204':
          description: ''
  /api/issues/:
    get:
      operationId: api_issues_list
      description: Получить список всех замечаний
      parameters:
      - in: query
        name: author_id
        schema:
          type: string
        description: ID автора
      - in: query
        name: bundle_id
        schema:
          type: string
          format: uuid
        description: ID бандла
      - in: query
        name: created_at_gte
        schema:
          type: string
          format: date-time
        description: Создано после указанных даты и времени
      - in: query
        name: created_at_lte
        schema:
          type: string
          format: date-time
        description: Создано до указанных даты и времени
      - in: query
        name: deadline_gte
        schema:
          type: string
          format: date-time
        description: Срок исполнения после указанных даты и времени
      - in: query
        name: deadline_lte
        schema:
          type: string
          format: date-time
        description: Срок исполнения до указанных даты и времени
      - in: query
        name: document_id
        schema:
          type: integer
        description: ID документа
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      - in: query
        name: resource_id
        schema:
          type: string
        description: UUID ресурса (проекта)
      - in: query
        name: responsible_users
        schema:
          type: string
        description: Список ответственных пользователей
      - in: query
        name: status
        schema:
          type: string
        description: Статус
      - in: query
        name: status_id
        schema:
          type: string
        description: Статус (аналогично предыдущему)
      - in: query
        name: status_ids
        schema:
          type: string
        description: Список статусов
      - in: query
        name: target_id
        schema:
          type: string
        description: ID проекта
      - in: query
        name: tenant_id (or company_id)
        schema:
          type: string
        description: ID компании
      - in: query
        name: workspace_id
        schema:
          type: string
        description: ID рабочего пространства Workspace
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIssueReadList'
          description: ''
    post:
      operationId: api_issues_create
      description: Создать новое замечание
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueCreate'
          description: ''
  /api/issues/{id}/:
    get:
      operationId: api_issues_retrieve
      description: Получить замечание по его ID
      parameters:
      - in: path
        name: id
        schema:
          type: string
        description: UUID замечания.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueRead'
          description: ''
    put:
      operationId: api_issues_update
      description: Изменить (редактировать) замечание
      parameters:
      - in: path
        name: id
        schema:
          type: string
        description: UUID замечания.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueCreate'
          description: ''
    patch:
      operationId: api_issues_partial_update
      description: Изменить (редактировать) замечание частично
      parameters:
      - in: path
        name: id
        schema:
          type: string
        description: UUID замечания.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIssueCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIssueCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIssueCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueCreate'
          description: ''
    delete:
      operationId: api_issues_destroy
      description: Удалить замечание (soft_delete)
      parameters:
      - in: path
        name: id
        schema:
          type: string
        description: UUID замечания.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '204':
          description: ''
  /api/issues/count/:
    get:
      operationId: api_issues_count_retrieve
      description: Получить количество замечаний по версиям документа внутри этого документа
      parameters:
        - in: query
          name: document_id
          schema:
            type: string
          description: ID документа
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: object
                    description: Результаты
                    additionalProperties:
                      type: object
                      description: Результаты для каждого document_id в запросе
                      properties:
                        id:
                          type: string
                          description: Идентификатор версии документа (UUID)
                        count:
                          type: integer
                          description: Количество замечаний
              example:
                results:
                  "80232":
                    "168ee056-ae4f-429c-ba9a-c2c620dc2d56": 3
                    "16e488bf-773e-4106-9ef2-862bd7d37100": 14
                    "b9b3399d-cab3-4c7b-9e6d-9812fb30974d": 64
                    "495e5d8e-11f1-4424-b24c-f1868505ded2": 2
                    "5a0b2b85-fb7d-43ca-ab49-b6e6ec9af362": 6
          description: ''
  /api/issues/daterange/:
    get:
      operationId: api_issues_daterange_retrieve
      description: Получить минимальное и максимальное значения для полей даты и времени
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  ranges:
                    type: object
                    properties:
                      created_at:
                        type: object
                        properties:
                          min:
                            type: string
                            format: date-time
                          max:
                            type: string
                            format: date-time
                      deadline:
                        type: object
                        properties:
                          min:
                            type: string
                            format: date-time
                          max:
                            type: string
                            format: date-time
              example:
                ranges:
                  created_at:
                    min: "2022-10-28T05:44:51.494000+00:00"
                    max: "2024-04-17T08:52:12.587010+00:00"
                  deadline:
                    min: "1970-01-01T00:00:00+00:00"
                    max: "2024-11-30T15:00:00+00:00"
  /api/issues/export/:
    get:
      operationId: api_issues_export_retrieve
      description: Экспортировать реестр замечаний в xlsx файл (с учетом query параметров)
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                type: string
                format: binary
          description: ''
  /api/issues/status-count/:
    get:
      operationId: api_issues_status_count_retrieve
      description: Получить подсчет статусов для данной компании
      parameters:
        - in: query
          name: tenant_id (or company_id)
          schema:
            type: string
          description: ID компании
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    '1':
                      type: integer
                      description: Количество статусов с ID 1
                    '2':
                      type: integer
                      description: Количество статусов с ID 2
                    '3':
                      type: integer
                      description: Количество статусов с ID 3
              example:
                "64f1a204-42a0-4d18-b991-61df5439d218":
                  '1': 0
                  '2': 0
                  '3': 1
                "eef223fb-0fdc-4c7b-bec7-ce8a145df108":
                  '1': 44
                  '2': 13
                  '3': 9
  /api/issues/status-count-v2/:
    get:
      operationId: api_issues_status_count_v2_retrieve
      description: Получить подсчет статусов, сгруппированный по id проекта
      parameters:
        - in: query
          name: tenant_id (or company_id)
          schema:
            type: string
          description: ID компании
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: ID
                      label:
                        type: string
                        description: Название
                      color:
                        type: string
                        description: Цветовой HEX код
                      count:
                        type: integer
                        description: Количество
              example:
                "64f1a204-42a0-4d18-b991-61df5439d218":
                  - id: 3
                    label: "Закрыто"
                    color: "#ff5c4a"
                    count: 1
                  - id: 2
                    label: "В процессе"
                    color: "#f0a401"
                    count: 0
                  - id: 1
                    label: "Открыто"
                    color: "#43c079"
                    count: 0
                "eef223fb-0fdc-4c7b-bec7-ce8a145df108":
                  - id: 3
                    label: "Закрыто"
                    color: "#ff5c4a"
                    count: 9
                  - id: 2
                    label: "В процессе"
                    color: "#f0a401"
                    count: 13
                  - id: 1
                    label: "Открыто"
                    color: "#43c079"
                    count: 44
          description: ''
  /api/status/:
    get:
      operationId: api_status_list
      description: Получить список существующих статусов
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIssueStatusList'
          description: ''
    post:
      operationId: api_status_create
      description: Создать новый статус
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueStatus'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueStatus'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueStatus'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatus'
          description: ''
  /api/status-models/:
    get:
      operationId: api_status_models_list
      description: Получить список существующих статусных моделей
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCustomStatusModelReadList'
          description: ''
    post:
      operationId: api_status_models_create
      description: Создать новую статусную модель
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomStatusModelCreate'
          description: ''
  /api/status-models/{id}/:
    get:
      operationId: api_status_models_retrieve
      description: Получить статусную модель по ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статусной модели.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomStatusModelRead'
          description: ''
    put:
      operationId: api_status_models_update
      description: Изменить статусную модель
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статусной модели.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CustomStatusModelCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomStatusModelCreate'
          description: ''
    patch:
      operationId: api_status_models_partial_update
      description: Изменить статусную модель частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статусной модели.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedCustomStatusModelCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedCustomStatusModelCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedCustomStatusModelCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomStatusModelCreate'
          description: ''
    delete:
      operationId: api_status_models_destroy
      description: Удалить статусную модель
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статусной модели.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '204':
          description: ''
  /api/status-relations/:
    get:
      operationId: api_status_relations_list
      description: Получить список связей между статусами
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIssueStatusRelationList'
          description: ''
    post:
      operationId: api_status_relations_create
      description: Создать связь между статусами
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatusRelation'
          description: ''
  /api/status-relations/{id}/:
    get:
      operationId: api_status_relations_retrieve
      description: Получить связь между статусами по ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) существующей связи.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusRelationResponse'
          description: ''
    put:
      operationId: api_status_relations_update
      description: Изменить связь между статусами
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) существующей связи.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueStatusRelation'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatusRelation'
          description: ''
    patch:
      operationId: api_status_relations_partial_update
      description: Изменить связь между статусами частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) существующей связи.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatusRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatusRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatusRelation'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatusRelation'
          description: ''
    delete:
      operationId: api_status_relations_destroy
      description: Удалить связь между статусами
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) существующей связи.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '204':
          description: ''
  /api/status/{id}/:
    get:
      operationId: api_status_retrieve
      description: Получить статус по ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статуса.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatus'
          description: ''
    put:
      operationId: api_status_update
      description: Изменить (редактировать) статус
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статуса.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueStatus'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueStatus'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueStatus'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatus'
          description: ''
    patch:
      operationId: api_status_partial_update
      description: Изменить (редактировать) статус частично
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статуса.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatus'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatus'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIssueStatus'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatus'
          description: ''
    delete:
      operationId: api_status_destroy
      description: Удалить статус
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) статуса.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '204':
          description: ''
  /api/transition-permissions/:
    get:
      operationId: api_transition_permissions_list
      description: Получить список существующих разрешений для изменения статусов
      parameters:
      - name: limit
        required: false
        in: query
        description: Количество элементов на страницу.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: Индекс начального элемента.
        schema:
          type: integer
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIssueTransitionPermissionReadList'
          description: ''
    post:
      operationId: api_transition_permissions_create
      description: Создать новое разрешение для изменения статусов
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          description: ''
  /api/transition-permissions/{id}/:
    get:
      operationId: api_transition_permissions_retrieve
      description: Получить разрешение по ID
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) доступа к изменению статуса.
          замечания.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTransitionPermissionRead'
          description: ''
    put:
      operationId: api_transition_permissions_update
      description: Изменить (редактировать) разрешение на изменение статуса
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) доступа к изменению статуса.
          замечания.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IssueTransitionPermissionCreate'
        required: true
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          description: ''
    patch:
      operationId: api_transition_permissions_partial_update
      description: Изменить (редактировать частично) разрешение на изменение статуса
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) доступа к изменению статуса.
          замечания.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIssueTransitionPermissionCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIssueTransitionPermissionCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIssueTransitionPermissionCreate'
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTransitionPermissionCreate'
          description: ''
    delete:
      operationId: api_transition_permissions_destroy
      description: Удалить доступ к изменению статуса
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Уникальный идентификатор (ID) доступа к изменению статуса.
          замечания.
        required: true
      tags:
      - api
      security:
      - jwtAuth: []
      - cookieAuth: []
      - basicAuth: []
      - {}
      responses:
        '204':
          description: ''
components:
  schemas:
    AttachmentRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID файла
        file_name:
          type: string
          readOnly: true
          title: Имя файла
        author_id:
          type: integer
          readOnly: true
          title: ID автора
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время добавления файла
        file:
          type: string
          format: uri
          nullable: true
          title: Файл
        type:
          type: string
          readOnly: true
          title: Тип файла
        issues:
          type: string
          readOnly: true
          nullable: true
          title: Список UUID замечаний, в которых данный файл использован в качестве вложения
        issue:
          type: string
          readOnly: true
          title: UUID замечания, к которому приложен данный файл
      required:
      - author_id
      - created_at
      - file
      - file_name
      - id
      - issue
      - issues
      - type
    AttachmentWrite:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID файла
        file_name:
          type: string
          title: Имя файла
          maxLength: 512
        author_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          title: ID автора
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время добавления файла
        file:
          type: string
          format: uri
          nullable: true
          title: Файл
        type:
          type: string
          readOnly: true
          title: Тип файла
        issue:
          type: string
          format: uuid
          nullable: true
          title: UUID замечания, к которому приложен данный файл
      required:
      - author_id
      - created_at
      - file
      - file_name
      - id
      - type
    AttributesSnapshot:
      type: object
      properties:
        snapshot_dt:
          type: string
          format: date-time
          title: Дата и время актуальности атрибутов
        data:
          nullable: true
          title: Значения атрибутов
    CommentCreate:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID комментария
        author_id:
          type: integer
          title: ID автора
        text:
          type: string
          title: Текст комментария
          maxLength: 8192
        attachments:
          type: array
          items:
            type: integer
          title: Файлы, прикрепленные к комментарию
        issue:
          type: string
          format: uuid
          nullable: true
          title: Замечание, к которому оставлен комментарий
        reply_to_comment:
          type: integer
          nullable: true
          title: Комментарий, в ответ на который оставлен комментарий
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания комментария
      required:
      - author_id
      - created_at
      - id
      - issue
      - text
    CommentRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID комментария
        author_id:
          type: integer
          readOnly: true
          title: ID автора комментария
        text:
          type: string
          readOnly: true
          title: Текст комментария
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentRead'
          readOnly: true
          title: Файлы, прикрепленные к комментарию
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания комментария
        updated_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время обновления комментария
        issue:
          type: string
          format: uuid
          title: Замечание, к которому оставлен комментарий
        reply_to_comment:
          type: integer
          title: Комментарий, в ответ на который оставлен комментарий
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          title: Дата и время удаления комментария
      required:
      - attachments
      - author_id
      - created_at
      - deleted_at
      - id
      - issue
      - text
      - updated_at
    CustomStatusModelCreate:
      type: object
      properties:
        title:
          type: string
          maxLength: 512
          title: Название
        attribute_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Атрибута
        tenant_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Компании
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/IssueStatus'
          title: Список статусов, включенных в данную статусную модель (объектов IssueStatus)
      required:
      - attribute_id
      - tenant_id
    CustomStatusModelRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID статусной модели
        title:
          type: string
          readOnly: true
          title: Название
        attribute_id:
          type: integer
          readOnly: true
          title: ID Атрибута
        tenant_id:
          type: integer
          readOnly: true
          title: ID Компании
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/IssueStatus'
          readOnly: true
          title: Список статусов, включенных в данную статусную модель (объектов IssueStatus)
      required:
      - attribute_id
      - id
      - statuses
      - tenant_id
      - title
    IssueChange:
      type: object
      properties:
        id:
          type: string
          format: uuid
          title: ID записи об изменении
        issue_id:
          type: string
          format: uuid
          title: ID замечания, в которое вносятся изменения
        cipher:
          type: string
          title: Шифр
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время внесения изменений в замечание
        author_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          title: ID автора внесенных изменений
        action:
          type: string
          title: Произведенное действие
          maxLength: 512
        was:
          type: string
          title: Было
        became:
          type: string
          title: Стало
      required:
      - action
      - author_id
      - became
      - cipher
      - created_at
      - id
      - issue_id
      - was
    IssueCreate:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          title: UUID замечания
        cipher:
          type: string
          readOnly: true
          title: Шифр
        document_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          title: ID документа
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания замечания
        title:
          type: string
          title: Название замечания
        author_id:
          type: integer
          title: ID автора
        status:
          type: integer
          nullable: true
          title: Статус
        status_id:
          type: integer
          title: Статус (аналогично предыдущему, в запросе может передаваться один из вариантов или оба сразу)
        tenant_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          title: ID компании
        completion_date:
          type: string
          format: date-time
          nullable: true
          title: Дата исполнения
        attachments:
          type: array
          items:
            type: integer
          title: Прикрепленные файлы
        target_id:
          type: integer
          nullable: true
          title: ID проекта
        workspace_id:
          type: string
          format: uuid
          nullable: true
          title: ID рабочего пространства
        app_instance_id:
          type: string
          format: uuid
          nullable: true
          title: ID объекта приложения
        state_id:
          type: string
          format: uuid
          nullable: true
          title: ID состояния
        y_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по Y
        x_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по X
        z_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по Z
        bundle_id:
          type: string
          format: uuid
          nullable: true
          title: ID бандла
        meta:
          nullable: true
          title: Мета данные
        resource_id:
          type: string
          format: uuid
          title: UUID ресурса (проекта)
        user:
          readOnly: true
          title: Пользователь
        comments:
          type: array
          title: Комментарии
          items:
            $ref: '#/components/schemas/CommentCreate'
        attributes:
          title: Атрибуты
          items:
            $ref: '#/components/schemas/AttributesSnapshot'
        note:
          type: string
          nullable: true
          title: Описание замечания
      required:
      - cipher
      - created_at
      - id
      - user
    IssueRead:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          title: ID замечания
        public_id:
          type: string
          format: uuid
          readOnly: true
          title: Публичный ID замечания
        cipher:
          type: string
          readOnly: true
          title: Шифр
        document_id:
          type: integer
          readOnly: true
          nullable: true
          title: ID документа
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания замечания
        updated_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время обновления замечания
        title:
          type: string
          readOnly: true
          title: Заголовок
        author_id:
          type: integer
          readOnly: true
          title: ID автора замечания
        status:
          readOnly: true
          title: Статус (объект)
          items:
            $ref: '#/components/schemas/IssueStatus'
        status_id:
          type: integer
          title: Статус (id)
        tenant_id:
          type: integer
          readOnly: true
          nullable: true
          title: ID компании
        completion_date:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          title: Дата исполнения
        responsible_users:
          type: array
          items:
            type: integer
          readOnly: true
          title: Список ID ответственных пользователей
        attachments:
          type: array
          items:
            type: integer
          title: Прикрепленные файлы
        target_id:
          type: integer
          readOnly: true
          nullable: true
          title: ID проекта
        workspace_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: ID рабочего пространства
        app_instance_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: ID объекта приложения
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          title: Дата и время удаления замечания
        state_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: ID состояния
        y_coordinate:
          type: number
          format: double
          readOnly: true
          nullable: true
          title: Координата по Y
        x_coordinate:
          type: number
          format: double
          readOnly: true
          nullable: true
          title: Координата по X
        z_coordinate:
          type: number
          format: double
          readOnly: true
          nullable: true
          title: Координата по Z
        bundle_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: ID бандла
        meta:
          readOnly: true
          nullable: true
          title: Мета данные
        resource_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: ID ресурса (проекта)
        user:
          type: object
          readOnly: true
          title: Пользователь
          properties:
            last_name:
              type: string
              description: Фамилия
            first_name:
              type: string
              description: Имя
        comments:
          type: string
          readOnly: true
          title: Комментарии
        comments_ids:
          type: array
          items:
            type: integer
          title: Список ID комментариев к данному замечанию
        attributes:
          type: array
          title: Атрибуты
          items:
            type: object
            properties:
              id:
                type: integer
                title: ID атрибута
              values:
                type: array
                items:
                  type: integer
                title: Значения атрибута
        note:
          type: string
          readOnly: true
          title: Deprecated описание (старый комментарий)
      required:
      - app_instance_id
      - attachments
      - author_id
      - bundle_id
      - cipher
      - comments
      - comments_ids
      - completion_date
      - created_at
      - deleted_at
      - document_id
      - id
      - meta
      - note
      - public_id
      - resource_id
      - responsible_users
      - state_id
      - status
      - status_id
      - target_id
      - tenant_id
      - title
      - updated_at
      - user
      - workspace_id
      - x_coordinate
      - y_coordinate
      - z_coordinate
    IssueStatus:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID статуса
        status_model:
          type: integer
          nullable: true
          title: Модель статусов
        value_option_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Опций
        color:
          type: string
          title: Цвет
          pattern: ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
          maxLength: 25
        name:
          type: string
          title: Название
          maxLength: 512
        label:
          type: string
          title: Отображаемое название
          maxLength: 512
        transitions:
          type: object
          title: Связь с другими статусами
          properties:
            inputs:
              type: array
              items:
                $ref: '#/components/schemas/IssueStatusRelation'
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/IssueStatusRelation'
          readOnly: true
      required:
      - id
      - transitions
      - value_option_id
    IssueStatusRelation:
      type: object
      properties:
        status_id:
          type: integer
          title: Статус ID
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/IssueTransitionPermissionRead'
      required:
        - status_id
        - permissions
    StatusRelationResponse:
      type: object
      properties:
        inputs:
          type: integer
          title: Приходящий статус (из какого статуса осуществляется переход в текущий)
        outputs:
          type: integer
          title: Целевой статус (в какой статус осуществляется переход из текущего)
      required:
        - inputs
        - outputs
    IssueTransitionPermissionCreate:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        service_account_id:
          type: string
          format: uuid
          nullable: true
          title: Служебный аккаунт
        type:
          allOf:
          - $ref: '#/components/schemas/TypeEnum'
          title: Роль
        relation:
          type: integer
          title: Связь
      required:
      - id
      - relation
      - type
    IssueTransitionPermissionRead:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        service_account_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          title: Служебный аккаунт
        type:
          allOf:
          - $ref: '#/components/schemas/TypeEnum'
          readOnly: true
          title: Роль
      required:
      - id
      - service_account_id
      - type
    PaginatedAttachmentReadList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/attachments/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/attachments/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentRead'
    PaginatedCommentReadList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/comments/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/comments/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/CommentRead'
    PaginatedCustomStatusModelReadList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status-models/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status-models/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/CustomStatusModelRead'
    PaginatedIssueChangeList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/issue-changes/?limit=100&offset=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/issue-changes/?limit=100&offset=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/IssueChange'
    PaginatedIssueReadList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/issues/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/issues/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/IssueRead'
    PaginatedIssueStatusList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status/?limit=100&offset=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status/?limit=100&offset=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/IssueStatus'
    PaginatedIssueStatusRelationList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status-relations/?limit=100&offset=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/status-relations/?limit=100&offset=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/IssueStatusRelation'
    PaginatedIssueTransitionPermissionReadList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/transition-permissions/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://example.org/api/transition-permissions/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/IssueTransitionPermissionRead'
    PatchedAttachmentWrite:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        file_name:
          type: string
          title: Имя файла
          maxLength: 512
        author_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          title: ID автора
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время добавления файла
        file:
          type: string
          format: uri
          nullable: true
          title: Файл
        type:
          type: string
          readOnly: true
          title: Тип файла
        issue:
          type: string
          format: uuid
          nullable: true
          title: UUID замечания, к которому приложен данный файл
    PatchedCommentCreate:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID комментария
        author_id:
          type: integer
          title: ID автора
        text:
          type: string
          title: Текст комментария
          maxLength: 8192
        attachments:
          type: array
          items:
            type: integer
          title: Файлы, прикрепленные к комментарию
        issue:
          type: string
          format: uuid
          nullable: true
          title: Замечание, к которому оставлен комментарий
        reply_to_comment:
          type: integer
          nullable: true
          title: Комментарий, в ответ на который оставлен комментарий
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания комментария
    PatchedCustomStatusModelCreate:
      type: object
      properties:
        title:
          type: string
          maxLength: 512
          title: Название
        attribute_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Атрибута
        tenant_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Компании
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/IssueStatus'
          title: Список статусов, включенных в данную статусную модель (объектов IssueStatus)
    PatchedIssueChange:
      type: object
      properties:
        id:
          type: string
          format: uuid
          title: ID записи об изменении замечания
        issue_id:
          type: string
          format: uuid
          title: ID замечания, в которое вносятся изменения
        cipher:
          type: string
          title: Шифр
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время внесения изменений в замечание
        author_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          title: ID автора внесенных изменений
        action:
          type: string
          title: Произведенное действие
          maxLength: 512
        was:
          type: string
          title: Было
        became:
          type: string
          title: Стало
    PatchedIssueCreate:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          title: UUID замечания
        cipher:
          type: string
          readOnly: true
          title: Шифр
        document_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          title: ID документа
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Дата и время создания замечания
        title:
          type: string
          title: Название замечания
        author_id:
          type: integer
          title: ID автора
        status:
          type: integer
          nullable: true
          title: Статус
        status_id:
          type: integer
          title: Статус
        tenant_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          title: ID компании
        completion_date:
          type: string
          format: date-time
          nullable: true
          title: Дата исполнения
        attachments:
          type: array
          items:
            type: integer
          title: Прикрепленные файлы
        target_id:
          type: integer
          nullable: true
          title: ID проекта
        workspace_id:
          type: string
          format: uuid
          nullable: true
          title: ID рабочего пространства
        app_instance_id:
          type: string
          format: uuid
          nullable: true
          title: ID объекта приложения
        state_id:
          type: string
          format: uuid
          nullable: true
          title: ID состояния
        y_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по Y
        x_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по X
        z_coordinate:
          type: number
          format: double
          nullable: true
          title: Координата по Z
        bundle_id:
          type: string
          format: uuid
          nullable: true
          title: ID бандла
        meta:
          nullable: true
          title: Мета данные
        resource_id:
          type: string
          format: uuid
          title: ID ресурса (проекта)
        user:
          readOnly: true
          title: Пользователь
        comments:
          type: array
          title: Комментарии
          items:
            $ref: '#/components/schemas/CommentCreate'
        attributes:
          title: Атрибуты
          items:
            $ref: '#/components/schemas/AttributesSnapshot'
        note:
          type: string
          nullable: true
          title: Описание
    PatchedIssueStatus:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          title: ID статуса
        status_model:
          type: integer
          nullable: true
          title: Модель статусов
        value_option_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          title: ID Опций
        color:
          type: string
          title: Цвет
          pattern: ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
          maxLength: 25
        name:
          type: string
          title: Название
          maxLength: 512
        label:
          type: string
          title: Отображаемое название
          maxLength: 512
        transitions:
          type: object
          additionalProperties:
            type: array
            items: {}
          readOnly: true
    PatchedIssueStatusRelation:
      type: object
      properties:
        inputs:
          type: integer
          title: Приходящий статус (из какого статуса осуществляется переход в текущий)
        outputs:
          type: integer
          title: Целевой статус (в какой статус осуществляется переход из текущего)
    PatchedIssueTransitionPermissionCreate:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        service_account_id:
          type: string
          format: uuid
          nullable: true
          title: ID Пользователя
        type:
          allOf:
          - $ref: '#/components/schemas/TypeEnum'
          title: Роль
        relation:
          type: integer
          title: Связь
    TypeEnum:
      enum:
      - admin
      - author
      - responsible
      type: string
      description: |-
        * `admin` - ADMIN
        * `author` - AUTHOR
        * `responsible` - RESPONSIBLE
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
