openapi: 3.0.3 info: title: UTZ Service API description: API для создания и контроля УТЗ. version: 1.0.0 servers: - url: http://localhost:8080 description: Local development server paths: /create: post: summary: Создать новую УТЗ description: Создается новая УТЗ. operationId: createUTZ requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UTZCreateRequest" responses: "201": description: UTZ успешно создана content: application/json: schema: $ref: "#/components/schemas/UTZCreateResponse" "401": description: Ошибка аутентификации content: application/json: schema: type: object properties: error: type: string example: "Ошибка аутентификации" "500": description: Ошибка сервера content: application/json: schema: type: object properties: error: type: string example: "Внутренняя ошибка сервера" components: schemas: UTZCreateRequest: type: object properties: name: type: string description: Название UTZ example: "Моя первая UTZ" description: type: string description: Описание UTZ example: "//TODO Добавить описание" limits: type: array description: Список общих ограничений UTZ items: $ref: "#/components/schemas/Limit" stages: type: array description: Список этапов UTZ items: $ref: "#/components/schemas/Stage" required: - name - description - limits - stages UTZCreateResponse: type: object properties: id: type: string description: Уникальный идентификатор созданной UTZ Limit: type: object properties: type: type: string enum: - SCHEME_VALUE_CONSTRAINT - USER_ACTION_CONSTRAINT description: Тип ограничения contraint_object_id: type: string description: Идентификатор объекта ограничения constraints: type: array description: Список ограничений items: $ref: "#/components/schemas/Constraint" isCritical: type: boolean description: Флаг критичности ограничения, если true, нарушение ограничения приведет к остановке УТЗ isReached: type: boolean description: Флаг достижения ограничения, если true, ограничение было достигнуто Constraint: type: object properties: key: type: string description: Ключ ограничения enum: - ">" - "<" - "=" - "!=" value: type: string description: Значение ограничения Stage: type: object properties: name: type: string description: Название этапа description: type: string description: Описание этапа limits: type: array description: Список ограничений этапа items: $ref: "#/components/schemas/Limit" actionGroups: type: array description: Список групп действий этапа items: $ref: "#/components/schemas/ActionGroup" completionCondition: $ref: "#/components/schemas/CompletionCondition" required: - name - description - limits - actionGroups ActionGroup: type: object properties: actionType: type: string enum: - USER_ACTION_GROUP - SYSTEM_ACTION_GROUP description: Тип группы действий actions: type: array description: Список действий в группе items: $ref: "#/components/schemas/Action" isRequired: type: boolean description: Флаг обязательности выполнения группы действий для завершения этапа isRandomOrder: type: boolean description: Флаг возможности случайного порядка выполнения действий в группе Action: type: object properties: objectId: type: string description: Идентификатор объекта на схеме propertyName: type: string description: Название свойства объекта newValue: type: string description: Новое значение свойства объекта CompletionCondition: type: object description: Условие завершения этапа properties: userActionCheckCondition: type: string enum: - allUserActionsCompleted - requiredUserActionsCompleted - notCheck description: Тип проверки пользовательских действий для завершения этапа timeCondition: $ref: "#/components/schemas/TimeCondition" propertyListCondition: type: array description: Список условий по свойствам для завершения этапа items: $ref: "#/components/schemas/PropertyCondition" TimeCondition: type: object properties: durationSeconds: type: integer description: Продолжительность в секундах для завершения этапа PropertyCondition: type: object description: Проверка значения свойства объекта на схеме properties: objectId: type: string description: ID объекта на схеме propertyName: type: string description: Название свойства operator: type: string enum: [">", "<", "=", "!=", ">=", "<="] expectedValue: type: string description: Ожидаемое значение для выполнения проверки