Files
toir-light/api-summary.json
Первов Артем 4584a0d581 Add download functionality for equipment attachments
- Introduced a new endpoint `GET /equipment/{id}/attachment/download` in the API for downloading equipment attachment files.
- Implemented the `downloadEquipmentAttachmentFile` function in the client to handle file downloads via the API, ensuring proper token management and blob handling.
- Updated the EquipmentAttachmentInput, EquipmentList, and EquipmentShow components to utilize the new download link, enhancing user experience by allowing direct downloads without exposing the MinIO URL.
- Added a new EquipmentAttachmentLink component to encapsulate the download link logic and improve code reusability.
2026-04-21 01:26:00 +03:00

901 lines
26 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": "downloadEquipmentAttachment",
"label": "GET /equipment/{id}/attachment/download",
"method": "GET",
"path": "/equipment/{id}/attachment/download",
"description": "Скачать файл-вложение (Content-Disposition: attachment, поток из MinIO)",
"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
}
]
}
]
}
]
}