diff --git a/frontend/src/data/toolRegistry.tsx b/frontend/src/data/toolRegistry.tsx
index b24fd89bc..738936b1a 100644
--- a/frontend/src/data/toolRegistry.tsx
+++ b/frontend/src/data/toolRegistry.tsx
@@ -18,66 +18,509 @@ export type ToolRegistry = {
};
export const baseToolRegistry: ToolRegistry = {
- "add-attachments": { icon: attachment, name: "home.attachments.title", component: null, view: "format", description: "home.attachments.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "add-image": { icon: image, name: "home.addImage.title", component: null, view: "format", description: "home.addImage.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "add-page-numbers": { icon: 123, name: "home.add-page-numbers.title", component: null, view: "format", description: "home.add-page-numbers.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "add-password": { icon: password, name: "home.addPassword.title", component: null, view: "security", description: "home.addPassword.desc", category: "Standard Tools", subcategory: "Document Security" },
- "add-stamp": { icon: approval, name: "home.AddStampRequest.title", component: null, view: "format", description: "home.AddStampRequest.desc", category: "Standard Tools", subcategory: "Document Security" },
- "add-watermark": { icon: branding_watermark, name: "home.watermark.title", component: null, view: "format", description: "home.watermark.desc", category: "Standard Tools", subcategory: "Document Security" },
- "adjust-colors-contrast": { icon: palette, name: "home.adjust-contrast.title", component: null, view: "format", description: "home.adjust-contrast.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "adjust-page-size-scale": { icon: crop_free, name: "home.scalePages.title", component: null, view: "format", description: "home.scalePages.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "auto-rename-pdf-file": { icon: match_word, name: "home.auto-rename.title", component: null, view: "format", description: "home.auto-rename.desc", category: "Advanced Tools", subcategory: "Automation" },
- "auto-split-by-size-count": { icon: content_cut, name: "home.autoSizeSplitPDF.title", component: null, view: "format", description: "home.autoSizeSplitPDF.desc", category: "Advanced Tools", subcategory: "Automation" },
- "auto-split-pages": { icon: split_scene_right, name: "home.autoSplitPDF.title", component: null, view: "format", description: "home.autoSplitPDF.desc", category: "Advanced Tools", subcategory: "Automation" },
- "automate": { icon: automation, name: "home.automate.title", component: null, view: "format", description: "home.automate.desc", category: "Advanced Tools", subcategory: "Automation" },
- "certSign": { icon: workspace_premium, name: "home.certSign.title", component: null, view: "sign", description: "home.certSign.desc", category: "Standard Tools", subcategory: "Signing" },
- "change-metadata": { icon: assignment, name: "home.changeMetadata.title", component: null, view: "format", description: "home.changeMetadata.desc", category: "Standard Tools", subcategory: "Document Review" },
- "change-permissions": { icon: admin_panel_settings, name: "home.permissions.title", component: null, view: "security", description: "home.permissions.desc", category: "Standard Tools", subcategory: "Document Review" },
- "compare": { icon: compare, name: "home.compare.title", component: null, view: "format", description: "home.compare.desc", category: "Recommended Tools", subcategory: null },
- "compressPdfs": { icon: zoom_in_map, name: "home.compressPdfs.title", component: CompressPdfPanel, view: "compress", description: "home.compressPdfs.desc", category: "Recommended Tools", subcategory: null },
- "convert": { icon: sync_alt, name: "home.fileToPDF.title", component: null, view: "convert", description: "home.fileToPDF.desc", category: "Recommended Tools", subcategory: null },
- "cropPdf": { icon: crop, name: "home.crop.title", component: null, view: "format", description: "home.crop.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "detect-split-scanned-photos": { icon: scanner, name: "home.ScannerImageSplit.title", component: null, view: "format", description: "home.ScannerImageSplit.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "edit-table-of-contents": { icon: bookmark_add, name: "home.editTableOfContents.title", component: null, view: "format", description: "home.editTableOfContents.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "extract-images": { icon: filter, name: "home.extractImages.title", component: null, view: "extract", description: "home.extractImages.desc", category: "Standard Tools", subcategory: "Extraction" },
- "extract-pages": { icon: upload, name: "home.extractPage.title", component: null, view: "extract", description: "home.extractPage.desc", category: "Standard Tools", subcategory: "Extraction" },
- "flatten": { icon: layers_clear, name: "home.flatten.title", component: null, view: "format", description: "home.flatten.desc", category: "Standard Tools", subcategory: "Document Security" },
- "get-all-info-on-pdf": { icon: fact_check, name: "home.getPdfInfo.title", component: null, view: "extract", description: "home.getPdfInfo.desc", category: "Standard Tools", subcategory: "Verification" },
- "manage-certificates": { icon: license, name: "home.manageCertificates.title", component: null, view: "security", description: "home.manageCertificates.desc", category: "Standard Tools", subcategory: "Document Security" },
- "mergePdfs": { icon: library_add, name: "home.merge.title", component: MergePdfPanel, view: "merge", description: "home.merge.desc", category: "Recommended Tools", subcategory: null },
- "multi-page-layout": { icon: dashboard, name: "home.pageLayout.title", component: null, view: "format", description: "home.pageLayout.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "multi-tool": { icon: dashboard_customize, name: "home.multiTool.title", component: null, view: "pageEditor", description: "home.multiTool.desc", category: "Recommended Tools", subcategory: null },
- "ocr": { icon: quick_reference_all, name: "home.ocr.title", component: null, view: "convert", description: "home.ocr.desc", category: "Recommended Tools", subcategory: null },
- "overlay-pdfs": { icon: layers, name: "home.overlay-pdfs.title", component: null, view: "format", description: "home.overlay-pdfs.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "read": { icon: article, name: "home.read.title", component: null, view: "view", description: "home.read.desc", category: "Standard Tools", subcategory: "Document Review" },
- "redact": { icon: visibility_off, name: "home.redact.title", component: null, view: "redact", description: "home.redact.desc", category: "Recommended Tools", subcategory: null },
- "remove": { icon: delete, name: "home.removePages.title", component: null, view: "remove", description: "home.removePages.desc", category: "Standard Tools", subcategory: "Removal" },
- "remove-annotations": { icon: thread_unread, name: "home.removeAnnotations.title", component: null, view: "remove", description: "home.removeAnnotations.desc", category: "Standard Tools", subcategory: "Removal" },
- "remove-blank-pages": { icon: scan_delete, name: "home.removeBlanks.title", component: null, view: "remove", description: "home.removeBlanks.desc", category: "Standard Tools", subcategory: "Removal" },
- "remove-certificate-sign": { icon: remove_moderator, name: "home.removeCertSign.title", component: null, view: "security", description: "home.removeCertSign.desc", category: "Standard Tools", subcategory: "Removal" },
- "remove-image": { icon: remove_selection, name: "home.removeImagePdf.title", component: null, view: "format", description: "home.removeImagePdf.desc", category: "Standard Tools", subcategory: "Removal" },
- "remove-password": { icon: lock_open_right, name: "home.removePassword.title", component: null, view: "security", description: "home.removePassword.desc", category: "Standard Tools", subcategory: "Removal" },
- "repair": { icon: build, name: "home.repair.title", component: null, view: "format", description: "home.repair.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "replace-and-invert-color": { icon: format_color_fill, name: "home.replaceColorPdf.title", component: null, view: "format", description: "home.replaceColorPdf.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "reorganize-pages": { icon: move_down, name: "home.reorganizePages.title", component: null, view: "pageEditor", description: "home.reorganizePages.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "rotate": { icon: rotate_right, name: "home.rotate.title", component: null, view: "format", description: "home.rotate.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "sanitize": { icon: sanitizer, name: "home.sanitizePdf.title", component: null, view: "security", description: "home.sanitizePdf.desc", category: "Standard Tools", subcategory: "Document Security" },
- "scanner-effect": { icon: scanner, name: "home.fakeScan.title", component: null, view: "format", description: "home.fakeScan.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "show-javascript": { icon: javascript, name: "home.showJS.title", component: null, view: "extract", description: "home.showJS.desc", category: "Advanced Tools", subcategory: "Developer Tools" },
- "sign": { icon: signature, name: "home.sign.title", component: null, view: "sign", description: "home.sign.desc", category: "Standard Tools", subcategory: "Signing" },
- "single-large-page": { icon: looks_one, name: "home.PdfToSinglePage.title", component: null, view: "format", description: "home.PdfToSinglePage.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "split": { icon: content_cut, name: "home.split.title", component: null, view: "format", description: "home.split.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "split-by-chapters": { icon: collections_bookmark, name: "home.splitPdfByChapters.title", component: null, view: "format", description: "home.splitPdfByChapters.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "split-by-sections": { icon: grid_on, name: "home.split-by-sections.title", component: null, view: "format", description: "home.split-by-sections.desc", category: "Advanced Tools", subcategory: "Advanced Formatting" },
- "splitPdf": { icon: content_cut, name: "home.split.title", component: SplitPdfPanel, view: "split", description: "home.split.desc", category: "Standard Tools", subcategory: "Page Formatting" },
- "unlock-pdf-forms": { icon: preview_off, name: "home.unlockPDFForms.title", component: null, view: "security", description: "home.unlockPDFForms.desc", category: "Standard Tools", subcategory: "Document Security" },
- "validate-pdf-signature": { icon: verified, name: "home.validateSignature.title", component: null, view: "security", description: "home.validateSignature.desc", category: "Standard Tools", subcategory: "Verification" },
- "view-pdf": { icon: article, name: "home.viewPdf.title", component: null, view: "view", description: "home.viewPdf.desc", category: "Recommended Tools", subcategory: null
+ "add-attachments": {
+ icon: attachment,
+ name: "home.attachments.title",
+ component: null,
+ view: "format",
+ description: "home.attachments.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting",
+ },
+ "add-image": {
+ icon: image,
+ name: "home.addImage.title",
+ component: null,
+ view: "format",
+ description: "home.addImage.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "add-page-numbers": {
+ icon: 123,
+ name: "home.add-page-numbers.title",
+ component: null,
+ view: "format",
+ description: "home.add-page-numbers.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "add-password": {
+ icon: password,
+ name: "home.addPassword.title",
+ component: null,
+ view: "security",
+ description: "home.addPassword.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "add-stamp": {
+ icon: approval,
+ name: "home.AddStampRequest.title",
+ component: null,
+ view: "format",
+ description: "home.AddStampRequest.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "add-watermark": {
+ icon: branding_watermark,
+ name: "home.watermark.title",
+ component: null,
+ view: "format",
+ description: "home.watermark.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "adjust-colors-contrast": {
+ icon: palette,
+ name: "home.adjust-contrast.title",
+ component: null,
+ view: "format",
+ description: "home.adjust-contrast.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "adjust-page-size-scale": {
+ icon: crop_free,
+ name: "home.scalePages.title",
+ component: null,
+ view: "format",
+ description: "home.scalePages.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "auto-rename-pdf-file": {
+ icon: match_word,
+ name: "home.auto-rename.title",
+ component: null,
+ view: "format",
+ description: "home.auto-rename.desc",
+ category: "Advanced Tools",
+ subcategory: "Automation"
+ },
+ "auto-split-by-size-count": {
+ icon: content_cut,
+ name: "home.autoSizeSplitPDF.title",
+ component: null,
+ view: "format",
+ description: "home.autoSizeSplitPDF.desc",
+ category: "Advanced Tools",
+ subcategory: "Automation"
+ },
+ "auto-split-pages": {
+ icon: split_scene_right,
+ name: "home.autoSplitPDF.title",
+ component: null,
+ view: "format",
+ description: "home.autoSplitPDF.desc",
+ category: "Advanced Tools",
+ subcategory: "Automation"
+ },
+ "automate": {
+ icon: automation,
+ name: "home.automate.title",
+ component: null,
+ view: "format",
+ description: "home.automate.desc",
+ category: "Advanced Tools",
+ subcategory: "Automation"
+ },
+ "certSign": {
+ icon: workspace_premium,
+ name: "home.certSign.title",
+ component: null,
+ view: "sign",
+ description: "home.certSign.desc",
+ category: "Standard Tools",
+ subcategory: "Signing"
+ },
+ "change-metadata": {
+ icon: assignment,
+ name: "home.changeMetadata.title",
+ component: null,
+ view: "format",
+ description: "home.changeMetadata.desc",
+ category: "Standard Tools",
+ subcategory: "Document Review"
+ },
+ "change-permissions": {
+ icon: admin_panel_settings,
+ name: "home.permissions.title",
+ component: null,
+ view: "security",
+ description: "home.permissions.desc",
+ category: "Standard Tools",
+ subcategory: "Document Review"
+ },
+ "compare": {
+ icon: compare,
+ name: "home.compare.title",
+ component: null,
+ view: "format",
+ description: "home.compare.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "compressPdfs": {
+ icon: zoom_in_map,
+ name: "home.compressPdfs.title",
+ component: CompressPdfPanel,
+ view: "compress",
+ description: "home.compressPdfs.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "convert": {
+ icon: sync_alt,
+ name: "home.fileToPDF.title",
+ component: null,
+ view: "convert",
+ description: "home.fileToPDF.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "cropPdf": {
+ icon: crop,
+ name: "home.crop.title",
+ component: null,
+ view: "format",
+ description: "home.crop.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "detect-split-scanned-photos": {
+ icon: scanner,
+ name: "home.ScannerImageSplit.title",
+ component: null,
+ view: "format",
+ description: "home.ScannerImageSplit.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "edit-table-of-contents": {
+ icon: bookmark_add,
+ name: "home.editTableOfContents.title",
+ component: null,
+ view: "format",
+ description: "home.editTableOfContents.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "extract-images": {
+ icon: filter,
+ name: "home.extractImages.title",
+ component: null,
+ view: "extract",
+ description: "home.extractImages.desc",
+ category: "Standard Tools",
+ subcategory: "Extraction"
+ },
+ "extract-pages": {
+ icon: upload,
+ name: "home.extractPage.title",
+ component: null,
+ view: "extract",
+ description: "home.extractPage.desc",
+ category: "Standard Tools",
+ subcategory: "Extraction"
+ },
+ "flatten": {
+ icon: layers_clear,
+ name: "home.flatten.title",
+ component: null,
+ view: "format",
+ description: "home.flatten.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "get-all-info-on-pdf": {
+ icon: fact_check,
+ name: "home.getPdfInfo.title",
+ component: null,
+ view: "extract",
+ description: "home.getPdfInfo.desc",
+ category: "Standard Tools",
+ subcategory: "Verification"
+ },
+ "manage-certificates": {
+ icon: license,
+ name: "home.manageCertificates.title",
+ component: null,
+ view: "security",
+ description: "home.manageCertificates.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "mergePdfs": {
+ icon: library_add,
+ name: "home.merge.title",
+ component: MergePdfPanel,
+ view: "merge",
+ description: "home.merge.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "multi-page-layout": {
+ icon: dashboard,
+ name: "home.pageLayout.title",
+ component: null,
+ view: "format",
+ description: "home.pageLayout.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "multi-tool": {
+ icon: dashboard_customize,
+ name: "home.multiTool.title",
+ component: null,
+ view: "pageEditor",
+ description: "home.multiTool.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "ocr": {
+ icon: quick_reference_all,
+ name: "home.ocr.title",
+ component: null,
+ view: "convert",
+ description: "home.ocr.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "overlay-pdfs": {
+ icon: layers,
+ name: "home.overlay-pdfs.title",
+ component: null,
+ view: "format",
+ description: "home.overlay-pdfs.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "read": {
+ icon: article,
+ name: "home.read.title",
+ component: null,
+ view: "view",
+ description: "home.read.desc",
+ category: "Standard Tools",
+ subcategory: "Document Review"
+ },
+ "redact": {
+ icon: visibility_off,
+ name: "home.redact.title",
+ component: null,
+ view: "redact",
+ description: "home.redact.desc",
+ category: "Recommended Tools",
+ subcategory: null
+ },
+ "remove": {
+ icon: delete,
+ name: "home.removePages.title",
+ component: null,
+ view: "remove",
+ description: "home.removePages.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "remove-annotations": {
+ icon: thread_unread,
+ name: "home.removeAnnotations.title",
+ component: null,
+ view: "remove",
+ description: "home.removeAnnotations.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "remove-blank-pages": {
+ icon: scan_delete,
+ name: "home.removeBlanks.title",
+ component: null,
+ view: "remove",
+ description: "home.removeBlanks.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "remove-certificate-sign": {
+ icon: remove_moderator,
+ name: "home.removeCertSign.title",
+ component: null,
+ view: "security",
+ description: "home.removeCertSign.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "remove-image": {
+ icon: remove_selection,
+ name: "home.removeImagePdf.title",
+ component: null,
+ view: "format",
+ description: "home.removeImagePdf.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "remove-password": {
+ icon: lock_open_right,
+ name: "home.removePassword.title",
+ component: null,
+ view: "security",
+ description: "home.removePassword.desc",
+ category: "Standard Tools",
+ subcategory: "Removal"
+ },
+ "repair": {
+ icon: build,
+ name: "home.repair.title",
+ component: null,
+ view: "format",
+ description: "home.repair.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "replace-and-invert-color": {
+ icon: format_color_fill,
+ name: "home.replaceColorPdf.title",
+ component: null,
+ view: "format",
+ description: "home.replaceColorPdf.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "reorganize-pages": {
+ icon: move_down,
+ name: "home.reorganizePages.title",
+ component: null,
+ view: "pageEditor",
+ description: "home.reorganizePages.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "rotate": {
+ icon: rotate_right,
+ name: "home.rotate.title",
+ component: null,
+ view: "format",
+ description: "home.rotate.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "sanitize": {
+ icon: sanitizer,
+ name: "home.sanitizePdf.title",
+ component: null,
+ view: "security",
+ description: "home.sanitizePdf.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "scanner-effect": {
+ icon: scanner,
+ name: "home.fakeScan.title",
+ component: null,
+ view: "format",
+ description: "home.fakeScan.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "show-javascript": {
+ icon: javascript,
+ name: "home.showJS.title",
+ component: null,
+ view: "extract",
+ description: "home.showJS.desc",
+ category: "Advanced Tools",
+ subcategory: "Developer Tools"
+ },
+ "sign": {
+ icon: signature,
+ name: "home.sign.title",
+ component: null,
+ view: "sign",
+ description: "home.sign.desc",
+ category: "Standard Tools",
+ subcategory: "Signing"
+ },
+ "single-large-page": {
+ icon: looks_one,
+ name: "home.PdfToSinglePage.title",
+ component: null,
+ view: "format",
+ description: "home.PdfToSinglePage.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "split": {
+ icon: content_cut,
+ name: "home.split.title",
+ component: null,
+ view: "format",
+ description: "home.split.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "split-by-chapters": {
+ icon: collections_bookmark,
+ name: "home.splitPdfByChapters.title",
+ component: null,
+ view: "format",
+ description: "home.splitPdfByChapters.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "split-by-sections": {
+ icon: grid_on,
+ name: "home.split-by-sections.title",
+ component: null,
+ view: "format",
+ description: "home.split-by-sections.desc",
+ category: "Advanced Tools",
+ subcategory: "Advanced Formatting"
+ },
+ "splitPdf": {
+ icon: content_cut,
+ name: "home.split.title",
+ component: SplitPdfPanel,
+ view: "split",
+ description: "home.split.desc",
+ category: "Standard Tools",
+ subcategory: "Page Formatting"
+ },
+ "unlock-pdf-forms": {
+ icon: preview_off,
+ name: "home.unlockPDFForms.title",
+ component: null,
+ view: "security",
+ description: "home.unlockPDFForms.desc",
+ category: "Standard Tools",
+ subcategory: "Document Security"
+ },
+ "validate-pdf-signature": {
+ icon: verified,
+ name: "home.validateSignature.title",
+ component: null,
+ view: "security",
+ description: "home.validateSignature.desc",
+ category: "Standard Tools",
+ subcategory: "Verification"
+ },
+ "view-pdf": {
+ icon: article,
+ name: "home.viewPdf.title",
+ component: null,
+ view: "view",
+ description: "home.viewPdf.desc",
+ category: "Recommended Tools",
+ subcategory: null
}
};
-export const toolEndpoints: Record = {
- split: ["split-pages", "split-pdf-by-sections", "split-by-size-or-count", "split-pdf-by-chapters"],
+export const toolEndpoints: Record = {
+ split: ["split-pages",
+ "split-pdf-by-sections",
+ "split-by-size-or-count",
+ "split-pdf-by-chapters"],
compressPdfs: ["compress-pdf"],
merge: ["merge-pdfs"],
// Add more endpoint mappings as needed