CIC API Mapping

Map CBS data to each bureau's request, and the bureau's response back to the score and report — no code change needed.

CIC Configuration
@if (bureau) { {{ bureau.environment }} {{ bureau.whitelisted ? 'Whitelisted' : 'Not whitelisted' }} @if (endpoint && !endpoint.exists) { Not configured yet } @if (dirty) { Unsaved changes } }
@if (error) {
{{ error }}
} @if (info) {
{{ info }}
} @if (bureau?.environment === 'SIMULATOR') {
In SIMULATOR mode the built-in test bureau answers in the shape of the seeded generic mapping. When moving to the bureau's UAT / PRODUCTION, change the paths below to match the bureau's own API specification.
} @if (loading) {
Loading…
} @if (endpoint && !loading) {
@if (tab === 'request') {

CBS field → bureau request Paths like consumer.ids[0].number build nested JSON and arrays

@for (r of requestRows; track $index; let i = $index) { }
# CBS field Bureau JSON path Transform Fixed / default value Mandatory
{{ i + 1 }}
A mandatory field missing on the customer stops the enquiry before the bureau is called.
} @if (tab === 'response') {

Bureau response → CBS result "score" drives the score shown everywhere; "hit" = false marks a no-hit; "errorCode" marks a failure

@for (r of responseRows; track $index; let i = $index) { }
# Bureau response JSON path CBS result field Transform Default
{{ i + 1 }}
@for (f of resultFieldList; track f.key) { }
Standard result fields: {{ resultFieldList.length }}; any other simple name is kept as an extra field.
} @if (tab === 'endpoint') {

Endpoint

Placeholders like {{ '{{' }}bureau.memberCode{{ '}}' }} or {{ '{{' }}enquiry.reference{{ '}}' }} are filled in. Authentication headers are added automatically. @if (jsonErrors.headers) { {{ jsonErrors.headers }} }
Constant parts of the request; request mappings are written into it. @if (jsonErrors.body) { {{ jsonErrors.body }} }
} @if (tab === 'preview') {

Preview builds the request from the saved mapping for a real customer — nothing is sent

@if (previewResult) { @if (previewResult.missingMandatory?.length) {
This customer would be refused — missing mandatory fields:
} @else {
All mandatory fields are present for this customer.
}

Request body sensitive values masked

{{ prettyBody(previewResult.body) }}

Call

Method
{{ previewResult.method }}
URL
{{ previewResult.url }}
Auth
{{ previewResult.authentication }}
@for (h of headerEntries(previewResult.headers); track h.k) {
{{ h.k }}
{{ h.v }}
}
} } }