For Developers
Build applications on the Property Data Trust Framework. Open standards, REST APIs, and JSON Schema — everything you need to integrate.
Getting Started
Core Concepts
Claims
Data in PDTF is represented as claims — statements about a property with attached provenance. Claims are immutable; updates are made by adding new claims.
Transactions
The central entity in PDTF. A transaction is created for a property and tracks all claims, state, and participants. Transactions are identified by transactionId and can be searched by UPRN or status.
Provenance
Every claim carries provenance metadata: who made the claim, when, with what evidence, and at what trust level. This is based on the OpenID Connect 'verified claims' standard.
Subscriptions
Subscribe to a transaction by POSTing a callbackUrl to receive webhook notifications when new claims are added. DELETE to unsubscribe.
Quick Start
curl -X POST \
https://api.example.com/pdtfService/transactions \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" curl -X GET \
https://api.example.com/pdtfService/transactions/{transactionId}/state \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" curl -X POST \
https://api.example.com/pdtfService/transactions/{transactionId}/claims \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '[{
"claims": {
"/propertyPack/energyEfficiency/currentEnergyRating": {
"value": "B"
}
},
"verification": {
"trustFramework": "pdtf",
"evidence": [{
"type": "electronic_record",
"record": {
"source": { "name": "EPC Register" }
}
}]
}
}]' API Reference
The PDTF API follows REST conventions with OpenAPI specification. All data is exchanged as JSON.
Authentication: All endpoints require a Bearer token (JWT) via the Authorization: Bearer {token} header.
/pdtfService/transactions Create Transaction
Create a new property transaction. Returns a transactionId and schema reference.
/pdtfService/transactions/search Search Transactions
Search for transactions by UPRN or status. Returns a list of matching transactions.
/pdtfService/transactions/{transactionId}/state Get State
Get the computed current state of a transaction formatted as a PDTF property pack schema.
/pdtfService/transactions/{transactionId}/claims Get Claims
Retrieve all claims for a transaction, including full verification metadata.
/pdtfService/transactions/{transactionId}/claims Create Claims
Submit an array of verified claims for a transaction. Claims are validated against the PDTF schema.
/pdtfService/transactions/{transactionId}/subscribe Subscribe
Subscribe to webhook notifications when new claims are added. Body: {callbackUrl}
/pdtfService/transactions/{transactionId}/subscribe Unsubscribe
Cancel an existing webhook subscription for this transaction.
Transaction Schema
All property data follows the PDTF Transaction Schema — a JSON Schema defining the complete data structure for a property transaction in England and Wales. It supports mapping to BASPI, Law Society TA forms, and RICS data standards.
pdtf-transaction.json
object
The propertyPack object contains 40+ sub-schemas covering BASPI material facts, TA6/TA7 form fields, title data, searches, and conveyancing declarations.
PDTF v2.0
PreviewThe next generation of PDTF uses W3C Verifiable Credentials and Decentralised Identifiers for cryptographic trust.
What's New in v2.0
Verifiable Credentials
W3C standard credentials with cryptographic proofs. No need to verify back with the source.
Decentralised Identifiers (DIDs)
Stable identifiers for participants with public-key binding. Example: did:web:moverly.com:users:abc
Entity Graph
Property → Title → Transaction relationships with participation credentials linking parties.
Per-Credential Access Control
termsOfUse field with confidentiality levels and role-based presentation policies.
Trust Registry
{
"rootIssuers": {
"HMLR": {
"did": "did:web:hmlr.gov.uk",
"claimPaths": ["/propertyPack/titles"]
},
"VoA": {
"did": "did:web:voa.gov.uk",
"claimPaths": ["/councilTaxBand"]
}
},
"trustedProxies": {
"tmGroup": {
"did": "did:web:api.tmgroup.co.uk",
"claimPaths": ["/searches"]
},
"moverly": {
"did": "did:web:trust.moveready.com",
"claimPaths": ["/propertyPack"]
}
}
}
The trust registry at trust.propdata.org.uk maintains the list of root issuers and trusted proxies.
Two-Phase Implementation
Trusted Proxies
Existing API providers (tmGroup, Moverly) wrap responses in PDTF-compliant VCs, signing with their trusted proxy keys. "Map-and-wrap" adaptors require minimal infrastructure changes.
Root Issuers
Primary sources (HMLR, VoA) issue PDTF-compliant VCs directly. Highest level of achievable trust with no intermediary signatures required.
Integration Guides
Joining the Framework
Step-by-step guide to becoming a PDTF participant, including DID setup and agent configuration.
Legacy Integration
Patterns for connecting existing systems to PDTF using legacy gateways and bidirectional mapping.
Reference Implementation
Example code and SDK references for building PDTF-compliant applications.
Ready to Build?
Join the developer community, explore the code, and start building on PDTF.