E-mail: contact@digilytics.ai
URL: https://www.digilytics.ai/contact-us
License: Digilytics©
Swagger documentation
Automated Portfolio Verification (APV) ingestion endpoint.
APV automates generation and verification of a property/portfolio schedule for a source company and its network of associated child companies.
It integrates with UK government data sources, including Companies House (CH) and Land Registry (LR), to fetch, process, clean, and present consolidated portfolio data in a structured format.
Portfolio schedule population is typically manual, time-consuming, and error-prone for brokers and limited company borrowers. Inaccurate schedules can affect lending quality, borrower experience, and engagement for buy-to-let (BTL) lenders.
Periodic schedule updates are also important for ongoing portfolio risk review and for identifying upsell/cross-sell opportunities.
The current verification process has high manual intervention, fragmented data sources, and significant error risk:
The ingestion API starts the APV workflow by accepting a client company identifier and one or more company numbers. It triggers downstream portfolio verification jobs that produce the latest available portfolio attributes, such as property address and loan status (encumbered/unencumbered).
| companyId required | integer <int64> Internal client company identifier |
| X-Request-Id | string Optional correlation id for request tracing |
| Authorization | string Bearer token used to access protected resources |
| provider | string Optional source system for company numbers.
Current supported value: |
| companyNumber | string^[A-Za-z0-9\\-]+$ Optional single company number |
| companies required | Array of strings non-empty [ items^[A-Za-z0-9\\-]+$ ] One or more company numbers to ingest |
{- "provider": "CH",
- "companyNumber": "12345678",
- "companies": [
- "12345678",
- "SC123456"
]
}{- "createdAt": "2019-08-24T14:15:22Z",
- "results": [
- {
- "provider": "string",
- "companyNumber": "string",
- "jobId": "string",
- "coalesced": true,
- "error": "string"
}
], - "errorCode": "string",
- "errorMessage": "string"
}| jobId required | string Unique job identifier returned by ingestion endpoint |
| Authorization | string Bearer token used to access protected resources |
{- "jobId": "b5d66f7a-2dd4-4b46-a8f8-0f33519ab7a1",
- "status": "IN_PROGRESS",
- "progressPercent": 65,
- "createdAt": "2026-02-24T10:02:30Z",
- "startedAt": "2026-02-24T10:02:40Z",
- "summary": {
- "totalCompanies": 20,
- "processedCompanies": 13,
- "successfulCompanies": 12,
- "failedCompanies": 1
}
}Product integration webhooks are automated notifications generated by APV events. APV sends server-to-server HTTP POST calls to your configured target URL when significant workflow events occur.
This webhook notifies your system when APV portfolio processing updates are available for a company and related job.
Configure this via webhook configuration API using APV-specific values:
APVAPV_STATUS_<ProductId>Delivery status codes commonly used in callback response tracking:
200: Success551: Failed - unable to authenticate request and send callback| companyId required | integer <int64> Internal client company identifier |
| X-Webhook-Signature | string Signature used to verify webhook authenticity |
| eventId required | string |
| eventType required | string Enum: "APV_JOB_QUEUED" "APV_JOB_IN_PROGRESS" "APV_JOB_COMPLETED" "APV_JOB_PARTIALLY_COMPLETED" "APV_JOB_FAILED" "APV_JOB_CANCELLED" |
| companyId required | integer <int64> |
| companyNumber | string |
| jobId required | string |
| status required | string Enum: "QUEUED" "IN_PROGRESS" "COMPLETED" "PARTIALLY_COMPLETED" "FAILED" "CANCELLED" |
| occurredAt required | string <date-time> |
object (ApvWebhookResultSummary) |
{- "eventId": "evt_3f6d20a2",
- "eventType": "APV_JOB_COMPLETED",
- "companyId": 10123,
- "companyNumber": "12345678",
- "jobId": "b5d66f7a-2dd4-4b46-a8f8-0f33519ab7a1",
- "status": "COMPLETED",
- "occurredAt": "2026-02-24T12:10:00Z",
- "resultSummary": {
- "totalProperties": 12,
- "encumberedProperties": 5,
- "unencumberedProperties": 7
}
}{- "statusCode": 200,
- "message": "string"
}Retrieve processed portfolio output after webhook notification indicates job completion.
This endpoint returns consolidated company and property-level data for the given job.
| jobId required | string Unique job identifier returned by ingestion endpoint |
| Authorization | string Bearer token used to access protected resources |
{- "jobId": "b5d66f7a-2dd4-4b46-a8f8-0f33519ab7a1",
- "status": "COMPLETED",
- "processedAt": "2026-02-24T12:10:00Z",
- "company": {
- "companyId": 10123,
- "companyNumber": "12345678",
- "companyName": "Acme Property Holdings Ltd"
}, - "portfolioSummary": {
- "totalProperties": 3,
- "encumberedProperties": 2,
- "unencumberedProperties": 1
}, - "properties": [
- {
- "propertyId": "prop_001",
- "address": "10 High Street, Suite 2, London, Greater London, SW1A 1AA, GB",
- "postcode": "SW1A 1AA",
- "country": "GB",
- "status": "ENCUMBERED",
- "lastVerifiedAt": "2026-02-24T12:08:00Z"
}, - {
- "propertyId": "prop_002",
- "address": "22 Market Road, Bristol, BS1 4QA, GB",
- "postcode": "BS1 4QA",
- "country": "GB",
- "status": "UNENCUMBERED",
- "lastVerifiedAt": "2026-02-24T12:07:10Z"
}
]
}