Route catalogue

Derived from the route tables listed below. Regenerate this page whenever a route changes — see the blast-radius checklist in the docs-writer skill.

Route table Aggregated as

src/app/app-routes.module.ts

The root — nests every feature table under MainLayoutComponent, plus the '' redirect to /welcome and the ** wildcard to PageNotFoundComponent.

auth/auth-routing.module.ts

RouterModule.forChild — renders outside the layout shell.

shared/shared-routing.module.ts

RouterModule.forChild.

admin/admin.routes.ts, app-welcome/app-welcome-routing/app-welcome-routing.routes.ts, crm-tools/tasks-routing.routes.ts, emails/emails-routing.routes.ts, manage/manage-routing.routes.ts, marketplaces/marketplaces-routing.routes.ts, processes/processes-routing.routes.ts, reports/reports-routing.routes.ts, suppliers/suppliers-routing.routes.ts, underwriting/underwriting-routing.routes.ts

Spread into generalAppRoutes.

Router options: useHash: true, scrollPositionRestoration: 'enabled', relativeLinkResolution: 'legacy', enableTracing: false. See routing.

Notation

Shorthand Meaning

STD

canActivate: [RouteAccessResolver, FeatureFlagsGeneralGuard, NgxPermissionsGuard] with data.permissions = { except: [REST_UW_ACCESS, ADVANCE_AUDITORS] }

UW-CFG

RESTRICTED_UW_ACCESS_CONFIG — denies REST_UW_ACCESS + ADVANCE_AUDITORS

AUD-CFG

RESTRICTED_AUDITORS_ACCESS_CONFIG — denies REST_UW_ACCESS only

RUW-CFG

RESTRICTED_REST_UW_ACCESS_ONLY_CONFIG — denies ADVANCE_AUDITORS only

MPS-CFG

RESTRICTED_UW_ACCESS_CONFIG_MARKETPLACE_STATEMENTS — UW-CFG plus report metadata

Outside the layout shell

Path Component Guards

/login

LoginComponent

none

/logout

LogoutComponent

none

/reset-password

ResetPasswordComponent

none

Welcome

Path Component Guards

/welcome

WelcomeComponent

AuthGuard, FeatureFlagsGeneralGuard

/welcome/:messageCode

WelcomeComponent

same

:messageCode renders a canned message from MessageService (INSTALL_EXTENSION, CANT_RECEIVE_SUPPLIER_TOKEN, YOU_CAN_ONLY_LOG_IN_TO_SUPPLIER_SUPPLIER4).

Root redirects

Path Behaviour

''

Redirect to /welcome (declared both inside and outside the layout children, pathMatch: 'full').

**

PageNotFoundComponent.

Admin

Parent /admin: canActivate: [RouteAccessResolver, FeatureFlagsGeneralGuard, NgxPermissionsGuard], data.permissions = { only: DEV, redirectTo: '/' }.

Path Component

/admin → ''

AdminBaseComponent

/admin/feature-flags

AdminFeatureFlagsComponent

/admin/qa

AdminQaComponent

/admin/**

redirect to /admin/feature-flags

Tasks

Parent /tasks: TasksComponent, STD.

Path Component

'', list

redirect to list/0/filter

list/:filterId/filter

TaskListComponent

Emails

Parent /emails: STD (no parent component).

Path Component

''

redirect to list

list

EmailListComponent (from crm-tools/emails/)

list/:filterId/filter

EmailPreviewComponent (from crm-tools/emails/)

Manage

Parent /manage: STD. Default child users/list.

Path Component

users (parent UsersComponent)

'' → list; list → UserListComponent; new → UserAddComponent; :loginKey/edit → UserEditComponent

perm-groups (parent PermGroupsComponent)

'' → list; list → PermGroupsListComponent; new → PermGroupsAddComponent; :permGroupKey/edit → PermGroupsEditComponent

batch-imports

BatchImportsComponent

global-settings

GlobalSettingsComponent

configs

ConfigsComponent

event-rules

'' → list; list → RulesListComponent; add → RulesAddEditComponent; :eventRuleId/edit → RulesAddEditComponent; :eventRuleId/history → RulesHistoryListComponent

event-rules-2

EventRules2Component

events

EventsComponent

month-end-close

MonthEndCloseComponent

onboarding (parent OnboardingComponent)

'' → list; list → OnboardingListComponent; add → OnboardingAddComponent; :onboardingTemplateKey/edit → OnboardingAddComponent; :onboardingTemplateKey/marketplaces → OnboardingMpListComponent

email-config (parent EmailSettingsComponent)

'' → list; list → EmailSettingsListComponent

fee-settings (parent FeeSettingsComponent)

'' → list; list → FeeSettingsListComponent; add → FeeSettingsAddComponent; :id/edit → FeeSettingsEditComponent

contracts

ContractsComponent

Marketplaces

Parent /marketplaces: STD.

Path Component

''

redirect to list

list

MarketplaceListComponent

add

MarketplaceComponent

:marketplaceKey/edit

MarketplaceComponent

Processes

Two tables. Parent /processes: STD.

Path (declaration order) Component

''

redirect to list

list

ProcessListComponent

:processKey/batches

ProcessBatchesComponent

:processKey/new

ProcessAddComponent

:processKey/edit

ProcessEditComponent

:processKey/:paymentKey

SupplierPaymentsDetailsComponent

:supKey

PendingEditComponent

approval

BalanceApprovalComponent — unreachable, shadowed by :supKey

Second table, parent /proceses (sic): canActivate: [RouteAccessResolver, FeatureFlagsGeneralGuard] — no NgxPermissionsGuard.

Path Component

''

redirect to approval

approval

BalanceApprovalComponent — the reachable one; the sidebar links here

The sidebar’s Payments group links to /processes/supplier-payments/batches, which resolves through :processKey/batches with the literal string supplier-payments as processKey. See processes.

Reports

Parent /reports: STD.

Path (declaration order) Component Notes

''

redirect to list

list

ReportListComponent

external

ExternalReportListComponent

new

ReportAddComponent

waiting-suppliers

WaitingSuppliersReportComponent

:reportKey/edit

ReportEditComponent

:reportName

ReportTableComponent

data: { supplierKeyInQueryParamsNotNeeded: true } — catch-all, must stay last

Underwriting tracker

Parent /underwriting: STD.

Path Component

''

redirect to tracker

tracker

TrackerComponent (pathMatch: 'full') — renders EVA

Visibility is additionally gated by the UNDERWRITING_TRACKER flag in the sidebar, not on the route.

Suppliers

Parent /suppliers: canActivate: [RouteAccessResolver, FeatureFlagsGeneralGuard] — no NgxPermissionsGuard at this level.

Path Component Access

''

redirect to ../

list

SupplierListComponent

:supplierKey

SupplierComponent, resolve: { supplierKey: SupplierKeyResolver }

Children of :supplierKey

Path Component Access

''

redirect to general

general

SupplierGeneralComponent

AUD-CFG

additional-business-owners

AdditionalBusinessOwnersComponent

—

additional-business-owners/new

AdditionalBusinessOwnersComponent

data: { isNew: true }

summary → '' → categorization

SupplierSummaryComponent / CategorizationComponent

UW-CFG

onboarding

SupplierOnboardingComponent

UW-CFG

new-underwriting

SupplierUnderwritingBetaComponent

canLoad/canActivate: [FeatureFlagGuard]

underwriting

SupplierUnderwritingComponent

RUW-CFG

underwriting/''

redirect to initial

underwriting/initial

UnderwritingInitialComponent

—

underwriting/background-reports

BackgroundReportsComponent

NgxPermissionsGuard, { only: FINANCE }

underwriting/daily

UnderwritingDailyComponent

UW-CFG

underwriting/supplier-information

SupplierInformationComponent

—

underwriting/documentation

DocumentationComponent

canLoad/canActivate: [FeatureFlagGuard]

underwriting/bank-transactions-report

UnderwritingReportTabComponent

data: { reportId: ExternalReports.PLAID }

underwriting/bank-transactions-categories

UnderwritingReportTabComponent

data: { reportId: ExternalReports.BANK_CATEGORIES }

underwriting/access-onboarding-predictions

UnderwritingReportTabComponent

data: { reportId: ExternalReports.ACCESS_ONBOARDING_PREDICTIONS }

underwriting/access-daily-predictions

UnderwritingReportTabComponent

data: { reportId: ExternalReports.ACCESS_DAILY_PREDICTIONS }

underwriting/ucc

UccMainComponent

UW-CFG

underwriting/ucc/''

redirect to list

underwriting/ucc/list

UccListComponent

—

underwriting/ucc/create

UccCreateComponent

—

underwriting/ucc/edit/:id

UccCreateComponent

—

underwriting/ucc/transUnion/:id

UccTransUnionComponent

—

payment

SupplierPaymentComponent

UW-CFG

payment/''

redirect to list

payment/list

SupplierPaymentListComponent

—

payment/new

OutgoingPaymentAddComponent

own NgxPermissionsGuard, STD except-clause

payment/edit/:paymentConfigKey

OutgoingPaymentAddComponent

own NgxPermissionsGuard, STD except-clause

payment/deposit-account-edit/:depositAccountKey

IncomingPaymentAddComponent

own NgxPermissionsGuard, STD except-clause

health

SupplierHealthComponent

UW-CFG

statements

SupplierMarketplaceStatementsComponent

MPS-CFG — reportName: 'mp_statements', reportConfigName: 'v_mp_statements', supplierKeyInQueryParamsNotNeeded: true

reports

SupplierReportsComponent

UW-CFG

reports/''

redirect to list

reports/list

SupplierReportListComponent

—

reports/:reportName

SupplierReportDetailsComponent

—

fees

SupplierFeesComponent

no restriction config

fees/''

redirect to purchase

fees/purchase

PurchaseFeesComponent

—

fees/payment

PaymentFeesComponent

—

fees/reserve

ReserveComponent

—

fees/reserve/edit/:marketplaceKey

EditMarketplaceComponent

—

marketplaces

SupplierMarketplacesComponent

UW-CFG

marketplaces/''

redirect to list

marketplaces/list

SupplierMarketplaceListComponent

—

marketplaces/edit/:mpSupplierKey

SupplierMarketplaceEditComponent

—

transaction-summary

SupplierTransactionSummaryComponent

UW-CFG

transaction-details

SupplierTransactionDetailsComponent

UW-CFG

receivables

SupplierReceivablesComponent

UW-CFG

advances

SupplierAdvancesComponent

UW-CFG

advances/''

BaseAdvancesComponent

—

advances/new

NewOfferComponent

—

advances/advance/:advanceKey

ActiveAdvanceDetailsComponent

—

advances/advance-line/:advanceLineKey

ActiveAdvanceLineDetailsComponent

—

advances/pending-request/:requestKey

PendingOfferComponent

—

advances/ml-offer/:mlOfferKey

OfferEligibilityDetailsComponent

—

advances/progressive-details

InstantAdvanceUnderwritingComponent

—

advances/progressive-details/:advanceOfferRequestKey

InstantAdvanceUnderwritingComponent

—

amazon-lending

SupplierAmazonLendingComponent

UW-CFG

amazon-lending/''

redirect to list

amazon-lending/list

SupplierAmazonLendingListComponent

—

amazon-lending/add-loan

SupplierAmazonLendingLoanComponent

SubPermissionsGuard, { requireOneOfSubPermissions: [MP_LOANS_MODIFY] }

amazon-lending/loan/:loanKey

SupplierAmazonLendingLoanComponent

SubPermissionsGuard, { requireOneOfSubPermissions: [MP_LOANS_DELETE, MP_LOANS_MODIFY] }

card-transactions/efs

SupplierEfsAccountComponent

UW-CFG

card-transactions/marqeta

SupplierMarqetaAccountComponent

UW-CFG

card-transactions/marqeta/:marqetaKey

CardTransactionsDetailsComponent

—

card-transactions/airwallex/disputes

AwxDisputesPageComponent

UW-CFG — must stay above :awxKey, see Ordering hazards

card-transactions/airwallex/:awxKey

AwxCardTransactionsDetailsComponent

—

card-transactions/airwallex

SupplierAwxAccountComponent

UW-CFG

contracts

SupplierContractsComponent

UW-CFG

Route data keys in use

Key Consumer

permissions

NgxPermissionsGuard

enabledByFeatureFlag

FeatureFlagGuard

requireOneOfSubPermissions

SubPermissionsGuard

reportId

UnderwritingReportTabComponent

reportName, reportConfigName

Report components

supplierKeyInQueryParamsNotNeeded

Report table components

isNew

AdditionalBusinessOwnersComponent

Ordering hazards

Table Hazard

/processes

:supKey precedes approval, shadowing it. /proceses/approval is the working path.

/reports

:reportName is a catch-all and must stay last. A report configured with the name list, new, external or waiting-suppliers would be unreachable.

/suppliers, Airwallex card transactions

card-transactions/airwallex/disputes must stay above card-transactions/airwallex/:awxKey. The parameterised route matches first otherwise and reads disputes as a transaction key, so the disputes page silently becomes the transaction-details screen. Nothing fails loudly; the route table order is the guarantee.

Root

AppRoutesModule must be imported last in AppModule; it owns ** and the '' redirect.