Files
toir-light/api-summary.json
Первов Артем b60c4ee0ed Add file attachment functionality for equipment management
- Introduced DTO for file attachments with metadata (objectKey, originalFileName, contentType, sizeBytes, downloadUrl).
- Updated Equipment DTO to include an optional attachment field.
- Implemented endpoints for uploading and deleting equipment attachments.
- Enhanced Equipment service to handle file storage and retrieval using S3.
- Updated EquipmentEdit, EquipmentList, and EquipmentShow components to support file attachment input and display.
- Configured S3 settings in docker-compose and environment files.
2026-04-21 00:46:17 +03:00

887 lines
25 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"sourceFiles": [
"domain/toir.api.dsl"
],
"enums": [],
"dtos": [
{
"name": "DTO.FileAttachment",
"description": "Метаданные файла в объектном хранилище (MinIO/S3); бинарные данные в БД не хранятся",
"fields": [
{
"name": "objectKey",
"type": "string",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Ключ объекта в бакете",
"map": null,
"sync": false,
"label": null
},
{
"name": "originalFileName",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Исходное имя файла",
"map": null,
"sync": false,
"label": null
},
{
"name": "contentType",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "MIME-тип",
"map": null,
"sync": false,
"label": null
},
{
"name": "sizeBytes",
"type": "integer",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Размер в байтах",
"map": null,
"sync": false,
"label": null
},
{
"name": "downloadUrl",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Ссылка на скачивание (публичная или presigned)",
"map": null,
"sync": false,
"label": null
}
]
},
{
"name": "DTO.Equipment",
"description": "Полный response-объект для единицы оборудования",
"fields": [
{
"name": "id",
"type": "uuid",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": "Equipment.id",
"sync": false,
"label": null
},
{
"name": "name",
"type": "string",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Название оборудования",
"map": "Equipment.name",
"sync": false,
"label": null
},
{
"name": "serialNumber",
"type": "string",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Заводской (серийный) номер",
"map": "Equipment.serialNumber",
"sync": false,
"label": null
},
{
"name": "dateOfInspection",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата поверки",
"map": "Equipment.dateOfInspection",
"sync": false,
"label": null
},
{
"name": "commissionedAt",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата изготовления",
"map": "Equipment.commissionedAt",
"sync": false,
"label": null
},
{
"name": "status",
"type": "EquipmentStatus",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Текущий статус",
"map": "Equipment.status",
"sync": false,
"label": null
},
{
"name": "attachment",
"type": "DTO.FileAttachment",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Вложение (файл в MinIO/S3)",
"map": "Equipment.attachment",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.EquipmentCreate",
"description": "Тело запроса на создание единицы оборудования",
"fields": [
{
"name": "name",
"type": "string",
"required": true,
"nullable": false,
"unique": false,
"primary": false,
"description": "Название оборудования",
"map": "Equipment.name",
"sync": false,
"label": null
},
{
"name": "serialNumber",
"type": "string",
"required": true,
"nullable": false,
"unique": false,
"primary": false,
"description": "Заводской (серийный) номер",
"map": "Equipment.serialNumber",
"sync": false,
"label": null
},
{
"name": "dateOfInspection",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата поверки",
"map": "Equipment.dateOfInspection",
"sync": false,
"label": null
},
{
"name": "commissionedAt",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата изготовления",
"map": "Equipment.commissionedAt",
"sync": false,
"label": null
},
{
"name": "status",
"type": "EquipmentStatus",
"required": true,
"nullable": false,
"unique": false,
"primary": false,
"description": "Текущий статус",
"map": "Equipment.status",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.EquipmentUpdate",
"description": "Тело запроса на обновление единицы оборудования",
"fields": [
{
"name": "name",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Название оборудования",
"map": "Equipment.name",
"sync": false,
"label": null
},
{
"name": "serialNumber",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Заводской (серийный) номер",
"map": "Equipment.serialNumber",
"sync": false,
"label": null
},
{
"name": "dateOfInspection",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата поверки",
"map": "Equipment.dateOfInspection",
"sync": false,
"label": null
},
{
"name": "commissionedAt",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата изготовления",
"map": "Equipment.commissionedAt",
"sync": false,
"label": null
},
{
"name": "status",
"type": "EquipmentStatus",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Текущий статус",
"map": "Equipment.status",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.EquipmentListRequest",
"description": "Запрос для постраничного получения списка оборудования с фильтрацией",
"fields": [
{
"name": "page",
"type": "DTO.PageRequest",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterName",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterSerialNumber",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterStatus",
"type": "EquipmentStatus",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
}
]
},
{
"name": "DTO.EquipmentListResponse",
"description": "Ответ с постраничным списком оборудования и метаданными",
"fields": [
{
"name": "content",
"type": "DTO.Equipment[]",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "pageInfo",
"type": "DTO.PageInfo",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
}
]
},
{
"name": "DTO.ChangeEquipmentStatus",
"description": "Полный response-объект для документа изменения статуса",
"fields": [
{
"name": "equipmentId",
"type": "Equipment",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": "ChangeEquipmentStatus.equipmentId",
"sync": false,
"label": null
},
{
"name": "newStatus",
"type": "EquipmentStatus",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Новый статус",
"map": "ChangeEquipmentStatus.newStatus",
"sync": false,
"label": null
},
{
"name": "number",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Номер",
"map": "ChangeEquipmentStatus.number",
"sync": false,
"label": null
},
{
"name": "date",
"type": "date",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": "Дата изменения статуса",
"map": "ChangeEquipmentStatus.date",
"sync": false,
"label": null
},
{
"name": "responsible",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Ответственный",
"map": "ChangeEquipmentStatus.responsible",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.ChangeEquipmentStatusCreate",
"description": "Тело запроса на создание документа изменения статуса",
"fields": [
{
"name": "equipmentId",
"type": "Equipment",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": "ChangeEquipmentStatus.equipmentId",
"sync": false,
"label": null
},
{
"name": "newStatus",
"type": "EquipmentStatus",
"required": true,
"nullable": false,
"unique": false,
"primary": false,
"description": "Новый статус",
"map": "ChangeEquipmentStatus.newStatus",
"sync": false,
"label": null
},
{
"name": "number",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Номер",
"map": "ChangeEquipmentStatus.number",
"sync": false,
"label": null
},
{
"name": "date",
"type": "date",
"required": true,
"nullable": false,
"unique": false,
"primary": false,
"description": "Дата изменения статуса",
"map": "ChangeEquipmentStatus.date",
"sync": false,
"label": null
},
{
"name": "responsible",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Ответственный",
"map": "ChangeEquipmentStatus.responsible",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.ChangeEquipmentStatusUpdate",
"description": "Тело запроса на обновление документа изменения статуса",
"fields": [
{
"name": "equipmentId",
"type": "Equipment",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": "ChangeEquipmentStatus.equipmentId",
"sync": false,
"label": null
},
{
"name": "newStatus",
"type": "EquipmentStatus",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Новый статус",
"map": "ChangeEquipmentStatus.newStatus",
"sync": false,
"label": null
},
{
"name": "number",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Номер",
"map": "ChangeEquipmentStatus.number",
"sync": false,
"label": null
},
{
"name": "date",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Дата изменения статуса",
"map": "ChangeEquipmentStatus.date",
"sync": false,
"label": null
},
{
"name": "responsible",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Ответственный",
"map": "ChangeEquipmentStatus.responsible",
"sync": false,
"label": null
}
]
},
{
"name": "DTO.ChangeEquipmentStatusListRequest",
"description": "Запрос для постраничного получения списка документов изменения статуса с фильтрацией",
"fields": [
{
"name": "page",
"type": "DTO.PageRequest",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterEquipmentId",
"type": "uuid",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterNumber",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterDate",
"type": "date",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "filterResponsible",
"type": "string",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
}
]
},
{
"name": "DTO.ChangeEquipmentStatusListResponse",
"description": "Ответ с постраничным списком документов изменения статуса и метаданными",
"fields": [
{
"name": "content",
"type": "DTO.ChangeEquipmentStatus[]",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
},
{
"name": "pageInfo",
"type": "DTO.PageInfo",
"required": false,
"nullable": false,
"unique": false,
"primary": false,
"description": null,
"map": null,
"sync": false,
"label": null
}
]
}
],
"apis": [
{
"name": "API.Equipment",
"description": "API управления справочником оборудования",
"endpoints": [
{
"name": "listEquipment",
"label": "POST /equipment/page",
"method": "POST",
"path": "/equipment/page",
"description": "Постраничный список оборудования с фильтрацией",
"attributes": [
{
"name": "request",
"type": "DTO.EquipmentListRequest",
"description": null
},
{
"name": "response",
"type": "DTO.EquipmentListResponse",
"description": null
}
]
},
{
"name": "getEquipment",
"label": "GET /equipment/{id}",
"method": "GET",
"path": "/equipment/{id}",
"description": "Получить единицу оборудования по идентификатору",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
},
{
"name": "response",
"type": "DTO.Equipment",
"description": null
}
]
},
{
"name": "createEquipment",
"label": "POST /equipment",
"method": "POST",
"path": "/equipment",
"description": "Создать новую единицу оборудования",
"attributes": [
{
"name": "request",
"type": "DTO.EquipmentCreate",
"description": null
}
]
},
{
"name": "updateEquipment",
"label": "PUT /equipment/{id}",
"method": "PUT",
"path": "/equipment/{id}",
"description": "Обновить данные единицы оборудования",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
},
{
"name": "request",
"type": "DTO.EquipmentUpdate",
"description": null
}
]
},
{
"name": "deleteEquipment",
"label": "DELETE /equipment/{id}",
"method": "DELETE",
"path": "/equipment/{id}",
"description": "Удалить единицу оборудования",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
}
]
},
{
"name": "uploadEquipmentAttachment",
"label": "POST /equipment/{id}/attachment",
"method": "POST",
"path": "/equipment/{id}/attachment",
"description": "Загрузить файл-вложение (multipart/form-data, поле file)",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
}
]
},
{
"name": "deleteEquipmentAttachment",
"label": "DELETE /equipment/{id}/attachment",
"method": "DELETE",
"path": "/equipment/{id}/attachment",
"description": "Удалить файл-вложение из хранилища и из записи",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
}
]
}
]
},
{
"name": "API.EquipmentStatusChange",
"description": "API управления документами изменения статуса оборудования",
"endpoints": [
{
"name": "listStatusChanges",
"label": "POST /status-changes/page",
"method": "POST",
"path": "/status-changes/page",
"description": "Постраничный список документов изменения статуса с фильтрацией",
"attributes": [
{
"name": "request",
"type": "DTO.ChangeEquipmentStatusListRequest",
"description": null
},
{
"name": "response",
"type": "DTO.ChangeEquipmentStatusListResponse",
"description": null
}
]
},
{
"name": "getStatusChange",
"label": "GET /status-changes/{id}",
"method": "GET",
"path": "/status-changes/{id}",
"description": "Получить документ изменения статуса по идентификатору",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
},
{
"name": "response",
"type": "DTO.ChangeEquipmentStatus",
"description": null
}
]
},
{
"name": "createStatusChange",
"label": "POST /status-changes",
"method": "POST",
"path": "/status-changes",
"description": "Создать документ изменения статуса оборудования",
"attributes": [
{
"name": "request",
"type": "DTO.ChangeEquipmentStatusCreate",
"description": null
}
]
},
{
"name": "updateStatusChange",
"label": "PUT /status-changes/{id}",
"method": "PUT",
"path": "/status-changes/{id}",
"description": "Обновить документ изменения статуса",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
},
{
"name": "request",
"type": "DTO.ChangeEquipmentStatusUpdate",
"description": null
}
]
},
{
"name": "deleteStatusChange",
"label": "DELETE /status-changes/{id}",
"method": "DELETE",
"path": "/status-changes/{id}",
"description": "Удалить документ изменения статуса",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
}
]
}
]
}
]
}