UiPath Documentation
industry-department-solutions
latest
false
Financial Services Solutions user guide
  • Overview
    • About financial services solutions
  • Financial Crime Compliance (FCC) solutions
  • Loan Origination Solution

RPA integration contracts

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_id to 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

FieldTypeRequiredUniqueDescription
IdstringYesNoInternal primary key
RPANameNVARCHAR(200)YesYesRPA identifier used for invocation
DisplayNameNVARCHAR(500)NoNoHuman-readable name
DescriptionNVARCHAR(2000)NoNoWhat this RPA does
OrchestratorFolderPathNVARCHAR(500)YesNoOrchestrator folder path where the process is deployed
ProcessNameNVARCHAR(200)YesNoProcess name in Orchestrator
ProcessTypeFINSProcessTypeYesNoType: DocumentMetadata, DocumentRetrieval, DataRetrieval, or DataParse
FindingCategorychoice setYesNoFinding category, such as Extraction, LoanOfficerEmail, ManagerEmail, Summary, or Risk
RPATypeVersionNVARCHAR(50)YesNoVersion of the RPA type contract (for example, 1)
EntryPointNameNVARCHAR(200)YesNoEntry point name within the process
ProcessInputTemplateNVARCHARNoNoJSON template with variables that Maestro fills when it invokes the process
IsActiveBITYesNoWhether the RPA is enabled
CreatedAtDATETIMEOFFSETYesNoWhen the RPA was registered

RPA types

RPATypePurposeWhen invoked
DataRetrievalPull structured data from core banking, LOS, or other systemsAfter loan trigger
DataParseTransform or parse retrieved data into standardized formats, once per sourceAfter DataRetrieval
DocumentMetadataRetrieve document metadata/index from document repositoryAfter loan trigger
DocumentRetrievalPull actual document files and write to storage bucketsAfter 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

FieldTypeRequiredDescription
versionstringYesContract version as a semantic-versioning string (for example, 1.0.0).
loan_idstringYesUnique loan identifier from the Loan Origination System. This ID is used to correlate all data extraction and agent outputs.

Implementation notes

  1. 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.
  2. Idempotency: If the same loan_id is 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

FieldTypeRequiredDescription
loan_idstringYesLoan identifier matching the one used in the Process Trigger.
loan_phasestringYesPhase being marked complete, for example Origination or QAQC. Scopes the completion event to a specific stage of the loan lifecycle.
loan_typestringYesLoan product type, for example HELOC or Mortgage. Recorded in the audit log alongside the completion event.

Implementation notes

  1. Idempotency: If the loan is already in Completed state, the call returns success with already_completed=true and takes no further action.
  2. 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.

Important:

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

FieldTypeRequiredDescription
versionstringYesContract version as a semantic-versioning string (for example, 1.0.0)
loan_idstringYesLoan 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

FieldTypeDescription
versionstringSchema version as a semantic-versioning string
loan_idstringLoan identifier from the LOS
external_loan_idstringSource-system loan identifier
successbooleanWhether retrieval completed successfully
sources[]arrayArray of source data objects
sources[].friendly_namestringLogical name for this source (e.g., core, los)
sources[].source_systemstringActual system name (e.g., Symitar, Encompass)
sources[].extraction_timestampdatetimeWhen the data was extracted
sources[].successbooleanWhether this source was queried successfully
sources[].custom_dataobjectRaw data from source; structure varies by system
sources[].error_code / sources[].error_messagestringError 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

FieldTypeDescription
versionstringContract version as a semantic-versioning string (for example, 1.0.0)
loan_idstringLoan identifier for correlation
external_loan_idstringSource-system loan identifier used to trace the record back to the LOS
friendly_namestringLogical name for this source (e.g., core, los)
source_systemstringActual system name (e.g., Symitar, Encompass)
extraction_timestampdatetimeWhen the data was extracted
custom_dataobjectRaw 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

FieldTypeDescription
successbooleanWhether parsing completed successfully
loan_idstringLoan identifier from the LOS
external_loan_idstringSource-system loan identifier used to trace the parsed record back to the LOS
friendly_namestringLogical name for the source
source_systemstringSource-system name
extraction_timestampdatetimeWhen the data was extracted from the source
mapped_dataobjectData mapped to well-known schema fields
mapped_data.loan_info.qualifying_credit_scorestringThree-digit qualifying credit score calculated by the LOS from all applicants and credit providers
mapped_data.applicant[].applicant_emailstringOptional applicant email address
mapped_data.<section>.custom_dataobjectOptional 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.

FieldAllowed values
mapped_data.loan_info.loan_typeAuto, CommercialRealEstate, HELOC, Mortgage
mapped_data.loan_info.occupancy_typePrimary Residence, Second Home, Investment Property, Manufactured Home, Hobby Farm
mapped_data.applicant[].applicant_typeMain Applicant, Co-Borrower, Non-Occupying Co-Borrower
mapped_data.applicant[].occupancy_statusOwn, Rent
mapped_data.applicant[].employment_statusEmployed, 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

FieldTypeRequiredDescription
versionstringYesContract version as a semantic-versioning string (for example, 1.0.0)
loan_idstringYesLoan identifier to query documents for
document_typesarrayNoFilter by document types. Empty = return all.
date_filterobjectNoFilter by modifiedAfter/modifiedBefore dates
max_documentsintegerNoMaximum 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

FieldTypeDescription
source_system_idstringUnique document ID in source system (OnBase, etc.)
document_namestringDocument name/title from source system
document_typestringDocument classification from source system
mime_typestringMIME type of the document
file_size_bytesintegerSize of the document in bytes
created_datedatetimeWhen document was created in source system
modified_datedatetimeWhen document was last modified
source_system_metadataobjectAdditional 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

FieldTypeDescription
versionstringContract version as a semantic-versioning string (for example, 1.0.0)
loan_idstringLoan identifier for correlation
documents_to_retrieve[]arrayList of documents to retrieve
.source_system_idstringDocument ID from DocumentMetadata output
.target_bucket_namestringOrchestrator storage bucket name
.target_file_pathstringFull 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

FieldTypeDescription
source_system_idstringDocument ID from the input request
statusenumSuccess, Failed, or Skipped
target_bucket_namestringBucket where document was written
target_file_pathstringPath where document was written
file_size_bytesintegerActual size of retrieved file
retrieved_atdatetimeTimestamp when document was retrieved
error_codestringError code if status is Failed
error_messagestringError 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:

ScopePurpose
OR.ExecutionTrigger and monitor process executions
OR.FoldersAccess folder structure
OR.JobsRead and manage job state
OR.Users.ReadRead user and group details needed to identify and display the signed-in user

Data Fabric scopes:

ScopePurpose
DataFabric.Data.ReadRead agent outputs and loan data from Data Fabric
DataFabric.Data.WriteWrite agent findings to Data Fabric
DataFabric.Schema.ReadRead Data Fabric schema definitions

Traces API scopes:

ScopePurpose
Traces.ApiAccess Maestro workflow execution traces for debugging and audit

Solutions Management scopes:

ScopePurpose
Solutions.Deployments.ReadRead 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.

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated