commit 31141c3999625a1cbbd00e7d97c92f00710efdc5 Author: Ганеев Артем Date: Fri Nov 21 15:28:12 2025 +0300 Создание спецификации для сервиса UTZ diff --git a/openapi.yml b/openapi.yml new file mode 100644 index 0000000..f01d154 --- /dev/null +++ b/openapi.yml @@ -0,0 +1,218 @@ +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: Ожидаемое значение для завершения этапа \ No newline at end of file