The operator writes every endpoint into the status of the custom resource; that is the authoritative list:
oc get icp4acluster icp4adeploy -n cp4ba -o jsonpath='{.status.endpoints}' | jq -r '.[] | "\(.name): \(.uri)"'
# typical output (names vary slightly per release)
Cloud Pak dashboard: https://cpd-cp4ba.apps.cluster.example.com/
Business Automation Studio: https://cpd-cp4ba.apps.cluster.example.com/bas/BAStudio (authoring: process designer inside)
Workflow Center console: https://cpd-cp4ba.apps.cluster.example.com/baw-center/ProcessCenter (repository, servers, snapshots)
Workflow Server (bawins1) - Process Admin: https://cpd-cp4ba.apps.cluster.example.com/baw/bawins1/ProcessAdmin
Workflow Server (bawins1) - REST base: https://cpd-cp4ba.apps.cluster.example.com/baw/bawins1/rest/bpm/wle/v1
Workflow Server (bawins1) - Process REST v2 / Operations REST: .../baw/bawins1/bpm , .../baw/bawins1/ops , Swagger: .../bpm/docs , .../ops/docs
Workplace: https://cpd-cp4ba.apps.cluster.example.com/workplace
Case Manager / Navigator: https://cpd-cp4ba.apps.cluster.example.com/icn/navigatorRules of thumb: since 21.0.3 everything goes through the Zen front door (cpd-<namespace>.apps.<cluster>) with a path per capability and per Workflow Server instance name (the name in baw_configuration); older releases used one route per component (icp4adeploy-bawins1-baw-server-..., still present as internal routes). The Swagger pages /bpm/docs and /ops/docs on the server route are the quickest way to confirm you hit the right instance. Inside the cluster, pods call each other through services (https://icp4adeploy-bawins1-baw-server.cp4ba.svc:9443) - use those for service-to-service integration to avoid the router.
References