63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { apiRequest } from './api';
|
|
|
|
export interface FindingCatalogMergeItem {
|
|
id: string;
|
|
categoryId: string;
|
|
categoryCode: string;
|
|
categoryName: string;
|
|
code: string;
|
|
sourceNumber: number;
|
|
title: string;
|
|
legalBasis: string | null;
|
|
glossary: string | null;
|
|
importNote: string | null;
|
|
suggestedSeverity: number | null;
|
|
revision: number;
|
|
isActive: boolean;
|
|
}
|
|
|
|
export interface FindingCatalogMergeAlias {
|
|
id: string;
|
|
code: string;
|
|
title: string;
|
|
reason: string;
|
|
mergedAt: string;
|
|
depth: number;
|
|
}
|
|
|
|
export interface FindingCatalogMergeStatus {
|
|
requested: FindingCatalogMergeItem;
|
|
isMerged: boolean;
|
|
canonical: FindingCatalogMergeItem;
|
|
aliases: FindingCatalogMergeAlias[];
|
|
}
|
|
|
|
export interface FindingCatalogMergeResult {
|
|
merge: {
|
|
id: string;
|
|
sourceItemId: string;
|
|
canonicalItemId: string;
|
|
reason: string;
|
|
mergedAt: string;
|
|
mergedBy: string;
|
|
requestId: string;
|
|
};
|
|
source: FindingCatalogMergeItem;
|
|
canonical: FindingCatalogMergeItem;
|
|
historyPolicy: 'EMITTED_FINDINGS_PRESERVED';
|
|
}
|
|
|
|
export function getFindingCatalogMergeStatus(itemId: string) {
|
|
return apiRequest<FindingCatalogMergeStatus>(`/finding-catalog/items/${itemId}/merge-status`);
|
|
}
|
|
|
|
export function mergeFindingCatalogItem(
|
|
sourceItemId: string,
|
|
input: { canonicalItemId: string; reason: string },
|
|
) {
|
|
return apiRequest<FindingCatalogMergeResult>(`/finding-catalog/items/${sourceItemId}/merge`, {
|
|
method: 'POST',
|
|
body: JSON.stringify(input),
|
|
});
|
|
}
|