Skip to content

Create a LAR profile version

POST
/v1/lar-profiles
curl --request POST \
--url http://localhost:8080/v1/lar-profiles \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "sourceFormat": "example", "mapping": "example", "activate": true }'

Adds a new immutable version of a named profile and deactivates the previous one; every loan records the version that parsed its LAR. mapping is { format, fields: [{ canonical, path, required? }] } and its format must match sourceFormat. Locators per format; json: $.a.b, $.list[*].x; csv: $.Column, $.Column[*] (column across data rows); xml: $.loan.guarantors.guarantor[*].name, trailing @attr for attributes; docx: $.Label (table cell or ‘Label:’ paragraph). PDF approval records go through the extraction pipeline as package documents, not through a profile. With activate (default true); or when the previous version was the configured one; intake switches to the new version. Administrators only. 400 for an invalid name, a non-object mapping, an empty field list or a format mismatch.

Media typeapplication/json

Body of POST /v1/lar-profiles: a new version of a named profile (profiles are versioned, never edited in place).

object
name
string
sourceFormat

Json | csv | xml | docx are parsed; pdf approval records go through the extraction pipeline instead.

string
mapping

{ format, fields: [{ canonical, path, required? }] }.

activate

Make this version the one intake uses (also true when the previous version was the configured one).

boolean
Examplegenerated
{
"name": "example",
"sourceFormat": "example",
"mapping": "example",
"activate": true
}

Created

Media typeapplication/json
object
id
required
string format: uuid
name
required
string
version
required
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
sourceFormat
required
string
isActive
required
boolean
isConfigured
required
boolean
mapping
required

A validated JSON document destined for a jsonb / nvarchar(max) ISJSON column. Distinct from string so the persistence layer can bind it with the right provider type on each dialect.

createdAt
required
string format: date-time
Examplegenerated
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"version": 1,
"sourceFormat": "example",
"isActive": true,
"isConfigured": true,
"mapping": "example",
"createdAt": "2026-04-15T12:00:00Z"
}