Создание спецификации для сервиса UTZ

This commit is contained in:
Ганеев Артем
2025-11-21 15:28:12 +03:00
commit 31141c3999

218
openapi.yml Normal file
View File

@@ -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: Ожидаемое значение для завершения этапа