DRAFT - APV Ingestion API (v1)

E-mail: contact@digilytics.ai
URL: https://www.digilytics.ai/contact-us
License: Digilytics©
Swagger documentation

Automated Portfolio Verification (APV) ingestion endpoint.

Product Overview

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.

Problem Statement

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.

Current Challenges

The current verification process has high manual intervention, fragmented data sources, and significant error risk:

  • Manual address de-duplication slows turnaround and introduces inconsistencies.
  • CH/LR retrieval often requires repeated API calls or CSV parsing at low scale.
  • Input and output data formats can vary and need cleanup before use.
  • Bulk company verification is difficult to execute efficiently.

This API in the Journey

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).

Ingestion

Ingest company portfolio data

Authorizations:
bearerAuth
path Parameters
companyId
required
integer <int64>

Internal client company identifier

header Parameters
X-Request-Id
string

Optional correlation id for request tracing

Authorization
string

Bearer token used to access protected resources

Request Body schema: application/json
required
provider
string

Optional source system for company numbers. Current supported value: CH (Companies House). If omitted, APV assumes CH.

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

Responses

Request samples

Content type
application/json
{
  • "provider": "CH",
  • "companyNumber": "12345678",
  • "companies": [
    ]
}

Response samples

Content type
application/json
{
  • "createdAt": "2019-08-24T14:15:22Z",
  • "results": [
    ],
  • "errorCode": "string",
  • "errorMessage": "string"
}

Job Status

Get ingestion job status

Authorizations:
bearerAuth
path Parameters
jobId
required
string

Unique job identifier returned by ingestion endpoint

header Parameters
Authorization
string

Bearer token used to access protected resources

Responses

Response samples

Content type
application/json
{
  • "jobId": "b5d66f7a-2dd4-4b46-a8f8-0f33519ab7a1",
  • "status": "IN_PROGRESS",
  • "progressPercent": 65,
  • "createdAt": "2026-02-24T10:02:30Z",
  • "startedAt": "2026-02-24T10:02:40Z",
  • "summary": {
    }
}

Webhooks

APV status webhook callback

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:

  • service request parameter: APV
  • feature request parameter: APV_STATUS_<ProductId>

Delivery status codes commonly used in callback response tracking:

  • 200: Success
  • 551: Failed - unable to authenticate request and send callback
path Parameters
companyId
required
integer <int64>

Internal client company identifier

header Parameters
X-Webhook-Signature
string

Signature used to verify webhook authenticity

Request Body schema: application/json
required
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)

Responses

Request samples

Content type
application/json
{
  • "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": {
    }
}

Response samples

Content type
application/json
{
  • "statusCode": 200,
  • "message": "string"
}

Processed Data

Get processed portfolio data by job id

Retrieve processed portfolio output after webhook notification indicates job completion.

This endpoint returns consolidated company and property-level data for the given job.

Authorizations:
bearerAuth
path Parameters
jobId
required
string

Unique job identifier returned by ingestion endpoint

header Parameters
Authorization
string

Bearer token used to access protected resources

Responses

Response samples

Content type
application/json
{
  • "jobId": "b5d66f7a-2dd4-4b46-a8f8-0f33519ab7a1",
  • "status": "COMPLETED",
  • "processedAt": "2026-02-24T12:10:00Z",
  • "company": {
    },
  • "portfolioSummary": {
    },
  • "properties": [
    ]
}