- Overview
- Financial Crime Compliance (FCC) solutions
- Loan Origination Solution
Data contracts for customer-built RPAs that integrate with the Loan Setup capability, defining the input and output schema each RPA must satisfy to extract and deliver data from your systems of record.
This page defines the data contracts for customer-built RPAs that integrate with the Loan Setup capability. Customers are responsible for building RPAs that extract data from their systems of record and deliver it in the formats specified below.
Overview
The Loan Setup capability requires data from multiple banking systems that are unique to your institution. To connect it to your systems, RPAs must be built that:
- Call the Maestro process API endpoint with a
loan_idto start processing - Call the Maestro process Mark Loan as Completed API endpoint to signal that a loan phase is finished
- Pull document data from the systems of record and write to Orchestrator storage buckets
- Pull JSON/XML data from the systems of record
- Transform data into the standardized formats defined in this document
RPA registry pattern
Customers should register their data integration RPAs with the solution by placing their RPA type, path, and related details into the Data Fabric FINSProcessRegistry table. The Maestro process will invoke these RPAs by name during execution.
FINSProcessRegistry table schema
| Field | Type | Required | Unique | Description |
|---|---|---|---|---|
Id | string | Yes | No | Internal primary key |
RPAName | NVARCHAR(200) | Yes | Yes | RPA identifier used for invocation |
DisplayName | NVARCHAR(500) | No | No | Human-readable name |
Description | NVARCHAR(2000) | No | No | What this RPA does |
OrchestratorFolderPath | NVARCHAR(500) | Yes | No | Orchestrator folder path where the process is deployed |
ProcessName | NVARCHAR(200) | Yes | No | Process name in Orchestrator |
ProcessType | FINSProcessType | Yes | No | Type: DocumentMetadata, DocumentRetrieval, DataRetrieval, or DataParse |
FindingCategory | choice set | Yes | No | Finding category, such as Extraction, LoanOfficerEmail, ManagerEmail, Summary, or Risk |
RPATypeVersion | NVARCHAR(50) | Yes | No | Version of the RPA type contract (for example, 1) |
EntryPointName | NVARCHAR(200) | Yes | No | Entry point name within the process |
ProcessInputTemplate | NVARCHAR | No | No | JSON template with variables that Maestro fills when it invokes the process |
IsActive | BIT | Yes | No | Whether the RPA is enabled |
CreatedAt | DATETIMEOFFSET | Yes | No | When the RPA was registered |
RPA types
| RPAType | Purpose | When invoked |
|---|---|---|
| DataRetrieval | Pull structured data from core banking, LOS, or other systems | After loan trigger |
| DataParse | Transform or parse retrieved data into standardized formats, once per source | After DataRetrieval |
| DocumentMetadata | Retrieve document metadata/index from document repository | After loan trigger |
| DocumentRetrieval | Pull actual document files and write to storage buckets | After DocumentMetadata |
Process Trigger Contract
To start the Loan Setup workflow, the customer's dispatcher RPA calls the Maestro process's HTTP API endpoint when a new loan requires processing. UiPath does not provide this dispatcher; your institution builds and maintains it. UiPath provides the exact API endpoint URL after deployment.
Request payload example
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234"
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234"
}
Field definitions
| Field | Type | Required | Description |
|---|---|---|---|
version | string | Yes | Contract version as a semantic-versioning string (for example, 1.0.0). |
loan_id | string | Yes | Unique loan identifier from the Loan Origination System. This ID is used to correlate all data extraction and agent outputs. |
Implementation notes
- Dispatcher responsibility: Your institution builds and maintains the dispatcher RPA or process that monitors the LOS for loan changes and calls the API trigger. UiPath does not provide this dispatcher.
- Idempotency: If the same
loan_idis submitted multiple times, the solution processes it again. Preventing duplicate submissions is the dispatcher's responsibility.
Authentication and invocation
The trigger is protected by UiPath Identity. The customer-built dispatcher is registered as a confidential external application, and its client secret belongs in a secure, server-side secret store. The secret must never be embedded in a browser application or in source control.
Required registration
The dispatcher requires a Confidential application registered in UiPath Admin with the OR.Jobs.Write scope. Its generated client ID and client secret are the credentials used to obtain an access token, and both are stored securely.
Token request
The client credentials are exchanged for a short-lived access token:
curl --location 'https://cloud.uipath.com/identity_/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=<external-app-client-id>' \
--data-urlencode 'client_secret=<external-app-client-secret>' \
--data-urlencode 'grant_type=client_credentials'
curl --location 'https://cloud.uipath.com/identity_/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=<external-app-client-id>' \
--data-urlencode 'client_secret=<external-app-client-secret>' \
--data-urlencode 'grant_type=client_credentials'
Trigger invocation
The Maestro endpoint that UiPath provides after deployment accepts the access token as a bearer token:
curl --location 'https://cloud.uipath.com/<organization-id>/<tenant-name>/orchestrator_/t/<agentic-process-trigger-id>/agenticprocess' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data '{"version":"1.0.0","loan_id":"LOAN-2025-001234"}'
curl --location 'https://cloud.uipath.com/<organization-id>/<tenant-name>/orchestrator_/t/<agentic-process-trigger-id>/agenticprocess' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access-token>' \
--data '{"version":"1.0.0","loan_id":"LOAN-2025-001234"}'
Each token is refreshed before the next invocation, or cached only for the lifetime returned in the token response.
Mark Loan as Completed Contract
After a loan has finished a lifecycle phase, the customer's RPA calls a separate API endpoint to signal completion. Loan Setup updates the loan status to Completed. This endpoint is idempotent: if the loan is already in that state, it returns success with already_completed=true and takes no further action.
Request payload example
{
"loan_id": "LOAN-2025-001234",
"loan_phase": "Origination",
"loan_type": "HELOC"
}
{
"loan_id": "LOAN-2025-001234",
"loan_phase": "Origination",
"loan_type": "HELOC"
}
Field definitions
| Field | Type | Required | Description |
|---|---|---|---|
loan_id | string | Yes | Loan identifier matching the one used in the Process Trigger. |
loan_phase | string | Yes | Phase being marked complete, for example Origination or QAQC. Scopes the completion event to a specific stage of the loan lifecycle. |
loan_type | string | Yes | Loan product type, for example HELOC or Mortgage. Recorded in the audit log alongside the completion event. |
Implementation notes
- Idempotency: If the loan is already in
Completedstate, the call returns success withalready_completed=trueand takes no further action. - Dispatcher responsibility: Your institution builds and maintains the process that calls this endpoint. UiPath does not provide this dispatcher.
Data Retrieval RPA Contract
This RPA retrieves raw data from multiple source systems, including Core Banking and the LOS, in a single call and returns it to Loan Setup.
This RPA returns the raw data exactly as it comes from each source system. The data transformation and mapping happen in the Data Parse RPA Contract.
RPA input example
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234"
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234"
}
Input fields
| Field | Type | Required | Description |
|---|---|---|---|
version | string | Yes | Contract version as a semantic-versioning string (for example, 1.0.0) |
loan_id | string | Yes | Loan identifier to retrieve data for |
RPA output example
Returns raw data from each source. The custom_data structure varies by source system.
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"success": true,
"sources": [
{
"friendly_name": "los",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"success": true,
"custom_data": {
"source_loan_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"appraised_amount": "564000.00",
"ltv_ratio": "31.638%",
"new_expense_ratio": "290.970%",
"occupancy_type": "Owner-Occupied",
"purpose_of_loan": "Home Improvement",
"loan_type": "HELOC",
"disclosures_date": "2024-11-04",
"due_date_for_disclosures": "2024-11-08",
"loan_officer_name": "John Smith",
"loan_officer_email": "jsmith@examplecu.com",
"assigned_user": "Mary Johnson",
"assigned_user_email": "mjohnson@examplecu.com",
"qualifying_credit_score": "712",
"applicants": [{"...": "..."}],
"credit_reports": [{"...": "..."}],
"property": {"...": "..."},
"compliance": {"...": "..."},
"application_notes": [{"...": "..."}]
}
}
]
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"success": true,
"sources": [
{
"friendly_name": "los",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"success": true,
"custom_data": {
"source_loan_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"appraised_amount": "564000.00",
"ltv_ratio": "31.638%",
"new_expense_ratio": "290.970%",
"occupancy_type": "Owner-Occupied",
"purpose_of_loan": "Home Improvement",
"loan_type": "HELOC",
"disclosures_date": "2024-11-04",
"due_date_for_disclosures": "2024-11-08",
"loan_officer_name": "John Smith",
"loan_officer_email": "jsmith@examplecu.com",
"assigned_user": "Mary Johnson",
"assigned_user_email": "mjohnson@examplecu.com",
"qualifying_credit_score": "712",
"applicants": [{"...": "..."}],
"credit_reports": [{"...": "..."}],
"property": {"...": "..."},
"compliance": {"...": "..."},
"application_notes": [{"...": "..."}]
}
}
]
}
The abbreviated nested values show the shape of custom_data. The complete contents vary by source system.
Output fields
| Field | Type | Description |
|---|---|---|
version | string | Schema version as a semantic-versioning string |
loan_id | string | Loan identifier from the LOS |
external_loan_id | string | Source-system loan identifier |
success | boolean | Whether retrieval completed successfully |
sources[] | array | Array of source data objects |
sources[].friendly_name | string | Logical name for this source (e.g., core, los) |
sources[].source_system | string | Actual system name (e.g., Symitar, Encompass) |
sources[].extraction_timestamp | datetime | When the data was extracted |
sources[].success | boolean | Whether this source was queried successfully |
sources[].custom_data | object | Raw data from source; structure varies by system |
sources[].error_code / sources[].error_message | string | Error details if success is false |
Data Parse RPA Contract
This RPA transforms raw data from a single source system into the well-known schema that Loan Setup expects. Loan Setup calls this RPA once for each source returned by DataRetrieval.
RPA input example
Loan Setup passes one source's raw data at a time.
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"friendly_name": "los",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"custom_data": {
"source_loan_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"...": "..."
}
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"friendly_name": "los",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"custom_data": {
"source_loan_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"...": "..."
}
}
Input fields
| Field | Type | Description |
|---|---|---|
version | string | Contract version as a semantic-versioning string (for example, 1.0.0) |
loan_id | string | Loan identifier for correlation |
external_loan_id | string | Source-system loan identifier used to trace the record back to the LOS |
friendly_name | string | Logical name for this source (e.g., core, los) |
source_system | string | Actual system name (e.g., Symitar, Encompass) |
extraction_timestamp | datetime | When the data was extracted |
custom_data | object | Raw data from the source system to be parsed/mapped |
RPA output example
Returns data mapped to the well-known schema fields that Loan Setup consumes.
{
"success": true,
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"friendly_name": "core",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"mapped_data": {
"source": "LOS",
"source_loan_id": "001234-02",
"version": "2.0.0",
"custom_data": {
"channel": "branch",
"branch_id": "TPA-04"
},
"loan_info": {
"loan_type": "HELOC",
"loan_application_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"appraised_amount": "564000.00",
"ltv_ratio": "31.638%",
"new_expense_ratio": "290.970%",
"occupancy_type": "Primary Residence",
"purpose_of_loan": "Home Improvement",
"disclosures_date": "2024-11-04",
"due_date_for_disclosures": "2024-11-08",
"loan_officer_name": "John Smith",
"loan_officer_email": "jsmith@examplecu.com",
"assigned_user": "Mary Johnson",
"assigned_user_email": "mjohnson@examplecu.com",
"qualifying_credit_score": "712",
"custom_data": {
"internal_promo_code": "REFI-2024-Q4",
"underwriter_notes_ref": "UW-7741"
}
},
"applicant": [
{
"applicant_type": "Main Applicant",
"first_name": "JOHN",
"middle_name": "A",
"last_name": "DOE",
"applicant_email": "john.doe@example.com",
"ssn": "589050676",
"date_of_birth": "1969-03-27",
"applicant_street": "16039 PENWOOD DR",
"applicant_city": "TAMPA",
"applicant_state": "FL",
"applicant_zip": "33647-1139",
"occupancy_status": "Own",
"employer_name": "GINGER HEALTH",
"position": "PHYSICAL THERAPY",
"employment_status": "Employed",
"years_employed": "22",
"monthly_income": "3511.11",
"custom_data": {
"employer_ein": "12-3456789",
"los_applicant_id": "APP-1001"
}
},
{
"applicant_type": "Co-Borrower",
"first_name": "JANE",
"middle_name": "B",
"last_name": "DOE",
"ssn": "412738955",
"date_of_birth": "1971-08-14",
"applicant_street": "742 EVERGREEN TERRACE",
"applicant_city": "ORLANDO",
"applicant_state": "FL",
"applicant_zip": "32801",
"occupancy_status": "Rent",
"employer_name": "ORLANDO REGIONAL MEDICAL CENTER",
"position": "REGISTERED NURSE",
"employment_status": "Employed",
"years_employed": "12",
"monthly_income": "5200.00"
}
],
"credit_report": [
{
"credit_report_first_name": "JOHN",
"credit_report_last_name": "DOE",
"credit_report_request_date": "2024-10-15",
"credit_score": "750",
"custom_data": {
"bureau": "Experian",
"report_id": "EXP-2024-10-15-A1B2"
}
},
{
"credit_report_first_name": "JANE",
"credit_report_last_name": "DOE",
"credit_report_request_date": "2024-10-15",
"credit_score": "712"
}
],
"property": {
"property_house_number": "16039",
"property_street": "PENWOOD DR",
"property_city": "TAMPA",
"property_state": "FL",
"property_zip_code": "33647",
"property_county": "HILLSBOROUGH",
"custom_data": {
"apn": "U-12-28-19-0L8-000019",
"flood_zone": "X",
"hoa_monthly_fee": "85.00"
}
},
"compliance": {
"precise_id_auth_decision": "",
"precise_id_prove_id_score": "",
"precise_id_applicant_first_name": "",
"precise_id_applicant_last_name": "",
"precise_id_ssn": "",
"precise_id_score": "",
"precise_id_decision": "",
"custom_data": {
"ofac_check_status": "PASS",
"cip_review_outcome": "CLEARED"
}
},
"application_notes": [
{
"application_note_timestamp": "2024-11-05T14:30:00Z",
"application_note_text": "---------- OFAC Check (PASS) ---------- ...",
"application_note_user": "SYSTEM"
},
{
"application_note_timestamp": "2024-11-04T10:21:00Z",
"application_note_text": "Disclosures sent via DocuSign. BSA Docs & USPS OnBased. VALID IDS:YES",
"application_note_user": "jsmith"
},
{
"application_note_timestamp": "2024-11-03T09:15:00Z",
"application_note_text": "This HELOC application is conditionally approved. ...",
"application_note_user": "jsmith"
},
{
"application_note_timestamp": "2024-11-01T08:45:00Z",
"application_note_text": "Work flow started",
"application_note_user": "SYSTEM"
}
]
}
}
{
"success": true,
"loan_id": "LOAN-2025-001234",
"external_loan_id": "001234-02",
"friendly_name": "core",
"source_system": "LOS",
"extraction_timestamp": "2025-01-15T11:00:00Z",
"mapped_data": {
"source": "LOS",
"source_loan_id": "001234-02",
"version": "2.0.0",
"custom_data": {
"channel": "branch",
"branch_id": "TPA-04"
},
"loan_info": {
"loan_type": "HELOC",
"loan_application_id": "001234-02",
"account_number": "001234",
"application_id": "02",
"app_date": "2024-11-05",
"loan_amount": "42900.00",
"appraised_amount": "564000.00",
"ltv_ratio": "31.638%",
"new_expense_ratio": "290.970%",
"occupancy_type": "Primary Residence",
"purpose_of_loan": "Home Improvement",
"disclosures_date": "2024-11-04",
"due_date_for_disclosures": "2024-11-08",
"loan_officer_name": "John Smith",
"loan_officer_email": "jsmith@examplecu.com",
"assigned_user": "Mary Johnson",
"assigned_user_email": "mjohnson@examplecu.com",
"qualifying_credit_score": "712",
"custom_data": {
"internal_promo_code": "REFI-2024-Q4",
"underwriter_notes_ref": "UW-7741"
}
},
"applicant": [
{
"applicant_type": "Main Applicant",
"first_name": "JOHN",
"middle_name": "A",
"last_name": "DOE",
"applicant_email": "john.doe@example.com",
"ssn": "589050676",
"date_of_birth": "1969-03-27",
"applicant_street": "16039 PENWOOD DR",
"applicant_city": "TAMPA",
"applicant_state": "FL",
"applicant_zip": "33647-1139",
"occupancy_status": "Own",
"employer_name": "GINGER HEALTH",
"position": "PHYSICAL THERAPY",
"employment_status": "Employed",
"years_employed": "22",
"monthly_income": "3511.11",
"custom_data": {
"employer_ein": "12-3456789",
"los_applicant_id": "APP-1001"
}
},
{
"applicant_type": "Co-Borrower",
"first_name": "JANE",
"middle_name": "B",
"last_name": "DOE",
"ssn": "412738955",
"date_of_birth": "1971-08-14",
"applicant_street": "742 EVERGREEN TERRACE",
"applicant_city": "ORLANDO",
"applicant_state": "FL",
"applicant_zip": "32801",
"occupancy_status": "Rent",
"employer_name": "ORLANDO REGIONAL MEDICAL CENTER",
"position": "REGISTERED NURSE",
"employment_status": "Employed",
"years_employed": "12",
"monthly_income": "5200.00"
}
],
"credit_report": [
{
"credit_report_first_name": "JOHN",
"credit_report_last_name": "DOE",
"credit_report_request_date": "2024-10-15",
"credit_score": "750",
"custom_data": {
"bureau": "Experian",
"report_id": "EXP-2024-10-15-A1B2"
}
},
{
"credit_report_first_name": "JANE",
"credit_report_last_name": "DOE",
"credit_report_request_date": "2024-10-15",
"credit_score": "712"
}
],
"property": {
"property_house_number": "16039",
"property_street": "PENWOOD DR",
"property_city": "TAMPA",
"property_state": "FL",
"property_zip_code": "33647",
"property_county": "HILLSBOROUGH",
"custom_data": {
"apn": "U-12-28-19-0L8-000019",
"flood_zone": "X",
"hoa_monthly_fee": "85.00"
}
},
"compliance": {
"precise_id_auth_decision": "",
"precise_id_prove_id_score": "",
"precise_id_applicant_first_name": "",
"precise_id_applicant_last_name": "",
"precise_id_ssn": "",
"precise_id_score": "",
"precise_id_decision": "",
"custom_data": {
"ofac_check_status": "PASS",
"cip_review_outcome": "CLEARED"
}
},
"application_notes": [
{
"application_note_timestamp": "2024-11-05T14:30:00Z",
"application_note_text": "---------- OFAC Check (PASS) ---------- ...",
"application_note_user": "SYSTEM"
},
{
"application_note_timestamp": "2024-11-04T10:21:00Z",
"application_note_text": "Disclosures sent via DocuSign. BSA Docs & USPS OnBased. VALID IDS:YES",
"application_note_user": "jsmith"
},
{
"application_note_timestamp": "2024-11-03T09:15:00Z",
"application_note_text": "This HELOC application is conditionally approved. ...",
"application_note_user": "jsmith"
},
{
"application_note_timestamp": "2024-11-01T08:45:00Z",
"application_note_text": "Work flow started",
"application_note_user": "SYSTEM"
}
]
}
}
Output fields
| Field | Type | Description |
|---|---|---|
success | boolean | Whether parsing completed successfully |
loan_id | string | Loan identifier from the LOS |
external_loan_id | string | Source-system loan identifier used to trace the parsed record back to the LOS |
friendly_name | string | Logical name for the source |
source_system | string | Source-system name |
extraction_timestamp | datetime | When the data was extracted from the source |
mapped_data | object | Data mapped to well-known schema fields |
mapped_data.loan_info.qualifying_credit_score | string | Three-digit qualifying credit score calculated by the LOS from all applicants and credit providers |
mapped_data.applicant[].applicant_email | string | Optional applicant email address |
mapped_data.<section>.custom_data | object | Optional source-specific fields. Supported at mapped_data, loan_info, each applicant[] item, each credit_report[] item, property, and compliance |
Enum-constrained fields
Map values from your source system to the following canonical strings. Other values fail contract validation after the Data Parse RPA returns.
| Field | Allowed values |
|---|---|
mapped_data.loan_info.loan_type | Auto, CommercialRealEstate, HELOC, Mortgage |
mapped_data.loan_info.occupancy_type | Primary Residence, Second Home, Investment Property, Manufactured Home, Hobby Farm |
mapped_data.applicant[].applicant_type | Main Applicant, Co-Borrower, Non-Occupying Co-Borrower |
mapped_data.applicant[].occupancy_status | Own, Rent |
mapped_data.applicant[].employment_status | Employed, Self-Employed, Part-Time, Unemployed, Retired, Other |
Document Metadata RPA Contract
This RPA retrieves document metadata/index information from the document repository (OnBase, FileNet, SharePoint, etc.) and returns it to Loan Setup. It does not retrieve the actual document files.
RPA input example
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"document_types": [],
"date_filter": {
"modified_after": "2025-12-01T00:00:00Z"
},
"max_documents": 100
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"document_types": [],
"date_filter": {
"modified_after": "2025-12-01T00:00:00Z"
},
"max_documents": 100
}
Input fields
| Field | Type | Required | Description |
|---|---|---|---|
version | string | Yes | Contract version as a semantic-versioning string (for example, 1.0.0) |
loan_id | string | Yes | Loan identifier to query documents for |
document_types | array | No | Filter by document types. Empty = return all. |
date_filter | object | No | Filter by modifiedAfter/modifiedBefore dates |
max_documents | integer | No | Maximum documents to return (default: 100) |
RPA output example
Returns document metadata. Loan Setup uses this to decide which documents to retrieve.
{
"success": true,
"loan_id": "LOAN-2025-001234",
"total_documents_found": 9,
"documents": [
{
"source_system_id": "ONBASE-DOC-789001",
"document_name": "Application Form",
"document_type": "Application",
"mime_type": "application/pdf",
"file_size_bytes": 245000,
"created_date": "2025-12-10T09:30:00Z",
"modified_date": "2025-12-10T09:30:00Z",
"source_system_metadata": {
"onbase_doc_type": "APP",
"indexed_by": "jsmith"
}
},
{
"source_system_id": "ONBASE-DOC-789002",
"document_name": "Credit Report - Experian",
"document_type": "CreditReport",
"mime_type": "application/pdf",
"file_size_bytes": 180000,
"created_date": "2025-12-08T14:22:00Z",
"modified_date": "2025-12-08T14:22:00Z"
},
{
"source_system_id": "ONBASE-DOC-789003",
"document_name": "Appraisal Report - 456 Oak Ave",
"document_type": "Appraisal",
"mime_type": "application/pdf",
"file_size_bytes": 2500000,
"created_date": "2025-12-05T11:45:00Z",
"modified_date": "2025-12-05T11:45:00Z"
}
],
"errors": []
}
{
"success": true,
"loan_id": "LOAN-2025-001234",
"total_documents_found": 9,
"documents": [
{
"source_system_id": "ONBASE-DOC-789001",
"document_name": "Application Form",
"document_type": "Application",
"mime_type": "application/pdf",
"file_size_bytes": 245000,
"created_date": "2025-12-10T09:30:00Z",
"modified_date": "2025-12-10T09:30:00Z",
"source_system_metadata": {
"onbase_doc_type": "APP",
"indexed_by": "jsmith"
}
},
{
"source_system_id": "ONBASE-DOC-789002",
"document_name": "Credit Report - Experian",
"document_type": "CreditReport",
"mime_type": "application/pdf",
"file_size_bytes": 180000,
"created_date": "2025-12-08T14:22:00Z",
"modified_date": "2025-12-08T14:22:00Z"
},
{
"source_system_id": "ONBASE-DOC-789003",
"document_name": "Appraisal Report - 456 Oak Ave",
"document_type": "Appraisal",
"mime_type": "application/pdf",
"file_size_bytes": 2500000,
"created_date": "2025-12-05T11:45:00Z",
"modified_date": "2025-12-05T11:45:00Z"
}
],
"errors": []
}
Output fields
| Field | Type | Description |
|---|---|---|
source_system_id | string | Unique document ID in source system (OnBase, etc.) |
document_name | string | Document name/title from source system |
document_type | string | Document classification from source system |
mime_type | string | MIME type of the document |
file_size_bytes | integer | Size of the document in bytes |
created_date | datetime | When document was created in source system |
modified_date | datetime | When document was last modified |
source_system_metadata | object | Additional metadata (index fields, keywords, etc.) |
Document Retrieval RPA Contract
This RPA retrieves the actual document files and writes them to Orchestrator storage buckets. Loan Setup calls this RPA with a specific list of documents to retrieve.
RPA input example
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"documents_to_retrieve": [
{
"source_system_id": "ONBASE-DOC-789001",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Application_Form.pdf"
},
{
"source_system_id": "ONBASE-DOC-789002",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Credit_Report.pdf"
},
{
"source_system_id": "ONBASE-DOC-789003",
"target_bucket_name": "fins-loan-ixp-queue",
"target_file_path": "pending/LOAN-2025-001234/Appraisal.pdf"
}
]
}
{
"version": "1.0.0",
"loan_id": "LOAN-2025-001234",
"documents_to_retrieve": [
{
"source_system_id": "ONBASE-DOC-789001",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Application_Form.pdf"
},
{
"source_system_id": "ONBASE-DOC-789002",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Credit_Report.pdf"
},
{
"source_system_id": "ONBASE-DOC-789003",
"target_bucket_name": "fins-loan-ixp-queue",
"target_file_path": "pending/LOAN-2025-001234/Appraisal.pdf"
}
]
}
Input fields
| Field | Type | Description |
|---|---|---|
version | string | Contract version as a semantic-versioning string (for example, 1.0.0) |
loan_id | string | Loan identifier for correlation |
documents_to_retrieve[] | array | List of documents to retrieve |
.source_system_id | string | Document ID from DocumentMetadata output |
.target_bucket_name | string | Orchestrator storage bucket name |
.target_file_path | string | Full path within bucket (including filename) |
RPA output example
Returns results for each document retrieval attempt.
{
"success": true,
"loan_id": "LOAN-2025-001234",
"documents_retrieved": 3,
"documents_failed": 0,
"results": [
{
"source_system_id": "ONBASE-DOC-789001",
"status": "Success",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Application_Form.pdf",
"file_size_bytes": 245000,
"retrieved_at": "2025-12-15T10:30:01Z"
},
{
"source_system_id": "ONBASE-DOC-789002",
"status": "Success",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Credit_Report.pdf",
"file_size_bytes": 180000,
"retrieved_at": "2025-12-15T10:30:02Z"
},
{
"source_system_id": "ONBASE-DOC-789003",
"status": "Success",
"target_bucket_name": "fins-loan-ixp-queue",
"target_file_path": "pending/LOAN-2025-001234/Appraisal.pdf",
"file_size_bytes": 2500000,
"retrieved_at": "2025-12-15T10:30:05Z"
}
]
}
{
"success": true,
"loan_id": "LOAN-2025-001234",
"documents_retrieved": 3,
"documents_failed": 0,
"results": [
{
"source_system_id": "ONBASE-DOC-789001",
"status": "Success",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Application_Form.pdf",
"file_size_bytes": 245000,
"retrieved_at": "2025-12-15T10:30:01Z"
},
{
"source_system_id": "ONBASE-DOC-789002",
"status": "Success",
"target_bucket_name": "fins-loan-documents",
"target_file_path": "LOAN-2025-001234/doc_files/Credit_Report.pdf",
"file_size_bytes": 180000,
"retrieved_at": "2025-12-15T10:30:02Z"
},
{
"source_system_id": "ONBASE-DOC-789003",
"status": "Success",
"target_bucket_name": "fins-loan-ixp-queue",
"target_file_path": "pending/LOAN-2025-001234/Appraisal.pdf",
"file_size_bytes": 2500000,
"retrieved_at": "2025-12-15T10:30:05Z"
}
]
}
Output fields
| Field | Type | Description |
|---|---|---|
source_system_id | string | Document ID from the input request |
status | enum | Success, Failed, or Skipped |
target_bucket_name | string | Bucket where document was written |
target_file_path | string | Path where document was written |
file_size_bytes | integer | Actual size of retrieved file |
retrieved_at | datetime | Timestamp when document was retrieved |
error_code | string | Error code if status is Failed |
error_message | string | Error details if status is Failed |
Browser application access and scopes
The Loan Setup web application uses a non-confidential external application because it runs in the user's browser and cannot safely store a client secret. Users sign in with their own UiPath accounts through the OAuth 2.0 Authorization Code flow with Proof Key for Code Exchange (PKCE). The application receives a short-lived user access token that represents the signed-in user; it does not use a shared service account.
The scopes below define the maximum APIs and operations the application can request. A scope is a ceiling, not a permission grant: each signed-in user can access only the resources and actions allowed by their UiPath roles and folder permissions.
Orchestrator scopes:
| Scope | Purpose |
|---|---|
OR.Execution | Trigger and monitor process executions |
OR.Folders | Access folder structure |
OR.Jobs | Read and manage job state |
OR.Users.Read | Read user and group details needed to identify and display the signed-in user |
Data Fabric scopes:
| Scope | Purpose |
|---|---|
DataFabric.Data.Read | Read agent outputs and loan data from Data Fabric |
DataFabric.Data.Write | Write agent findings to Data Fabric |
DataFabric.Schema.Read | Read Data Fabric schema definitions |
Traces API scopes:
| Scope | Purpose |
|---|---|
Traces.Api | Access Maestro workflow execution traces for debugging and audit |
Solutions Management scopes:
| Scope | Purpose |
|---|---|
Solutions.Deployments.Read | Read which solution version is deployed; this scope cannot deploy, activate, or uninstall a solution |
Infrastructure requirements
The UiPath Robot machines executing the following RPA contracts must be running UiPath Robot version 25.10.x or higher:
- DataRetrieval: retrieves raw loan data from source systems such as core banking and LOS
- DataParse: transforms raw source data into the normalized schema expected by Maestro agents
This version requirement supports RPA input payloads larger than 10 KB, which are common when retrieving full loan records from core banking systems.
Related topics
- Overview
- RPA registry pattern
- Process Trigger Contract
- Authentication and invocation
- Mark Loan as Completed Contract
- Data Retrieval RPA Contract
- Data Parse RPA Contract
- Enum-constrained fields
- Document Metadata RPA Contract
- Document Retrieval RPA Contract
- Browser application access and scopes
- Infrastructure requirements
- Related topics