Hometrack API Public
Hometrack API Public from Hometrack — 19 path(s) described in OpenAPI.
Hometrack API Public from Hometrack — 19 path(s) described in OpenAPI.
openapi: 3.0.1
info:
title: Hometrack API Public
description: Hometrack API for public consumption
version: '1.0'
x-api-evangelist-provenance:
provider: Hometrack
portal: https://developer.hometrack.com
harvested: '2026-07-26'
method: Azure API Management developer data-plane, anonymous
sources:
- url: https://developer.hometrack.com/developer/apis/hometrack-api-public?api-version=2022-04-01-preview&export=true&format=openapi-link
status: 200
note: OpenAPI 3.0.1 export (info/servers/securitySchemes verbatim; paths empty in export)
- url: https://developer.hometrack.com/developer/apis/hometrack-api-public/operations?api-version=2022-04-01-preview
status: 200
note: operation list
- url: https://developer.hometrack.com/developer/apis/hometrack-api-public/operations/{operationId}?api-version=2022-04-01-preview
status: 200
note: per-operation request/response metadata
- url: https://developer.hometrack.com/developer/apis/hometrack-api-public/schemas?api-version=2022-04-01-preview
status: 200
note: component schema documents
note: paths and components.schemas were reassembled verbatim from Hometrack's own APIM operation and
schema metadata; nothing was invented.
servers:
- url: https://api.hometrack.com
- url: https://api.hometrack.local
paths:
/api/authentication/{apiKey}:
post:
operationId: AuthenticationApi_Post
summary: Authenticates the user by exchanging an API key with a temporary token
description: The resulting token will be a plain text GUID. e.g. 64e12ae6-f941-4851-aa4f-86439104056d
parameters:
- name: apiKey
in: path
required: true
schema:
type: string
description: The API key
responses:
'201':
description: Created - authentication was successful
content:
text/plain:
schema:
$ref: '#/components/schemas/ApiAuthenticationApiKeyPost201TextPlainResponse'
'400':
description: Bad Request - the apiKey is missing
content:
text/plain:
schema:
type: string
'403':
description: Forbidden - the apiKey could not be authenticated
content:
text/plain:
schema:
type: string
'500':
description: Internal Server Error - an unexpected error has occured
content:
text/plain:
schema:
type: string
'503':
description: Service Unavailable - unable to authenticate at this time
content:
text/plain:
schema:
type: string
/api/reporting/moveToBlobStorage:
get:
operationId: ReportingApi_MoveToBlobStorage
summary: "Called via a scheduled task, this method uploads all files from the report directory\r\
\nto blob storage and then deletes them."
description: "Called via a scheduled task, this method uploads all files from the report directory\r\
\nto blob storage and then deletes them."
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: '#/components/schemas/ApiReportingMoveToBlobStorageGet200ApplicationXmlResponse'
example: <ApiReportingMoveToBlobStorageGet200ApplicationXmlResponse />
text/xml:
schema:
$ref: '#/components/schemas/ApiReportingMoveToBlobStorageGet200TextXmlResponse'
example: <ApiReportingMoveToBlobStorageGet200TextXmlResponse />
application/json:
schema:
$ref: '#/components/schemas/ApiReportingMoveToBlobStorageGet200ApplicationJsonResponse'
example: {}
text/json:
schema:
$ref: '#/components/schemas/ApiReportingMoveToBlobStorageGet200TextJsonResponse'
example: {}
/api/pvrplugin/enquiry/{token}:
post:
operationId: PvrPluginApi_StoreEnquiry
summary: Checks if email or it's domain is blacklisted and sends verification code if set in umbraco
description: Checks if email or it's domain is blacklisted and sends verification code if set in
umbraco
parameters:
- name: token
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Enquiry'
example:
Contact:
Email: string
Firstname: string
Lastname: string
Phone: string
Company: string
JobTitle: string
BrandCode: string
text/json:
schema:
$ref: '#/components/schemas/Enquiry'
example:
Contact:
Email: string
Firstname: string
Lastname: string
Phone: string
Company: string
JobTitle: string
BrandCode: string
application/xml:
schema:
$ref: '#/components/schemas/Enquiry'
example: "<Enquiry>\r\n <Contact>\r\n <Email>string</Email>\r\n <Firstname>string</Firstname>\r\
\n <Lastname>string</Lastname>\r\n <Phone>string</Phone>\r\n <Company>string</Company>\r\
\n <JobTitle>string</JobTitle>\r\n </Contact>\r\n <BrandCode>string</BrandCode>\r\n\
</Enquiry>"
text/xml:
schema:
$ref: '#/components/schemas/Enquiry'
example: "<Enquiry>\r\n <Contact>\r\n <Email>string</Email>\r\n <Firstname>string</Firstname>\r\
\n <Lastname>string</Lastname>\r\n <Phone>string</Phone>\r\n <Company>string</Company>\r\
\n <JobTitle>string</JobTitle>\r\n </Contact>\r\n <BrandCode>string</BrandCode>\r\n\
</Enquiry>"
application/x-www-form-urlencoded:
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPvrpluginEnquiryTokenPost200ApplicationJsonResponse'
example: {}
text/json:
schema:
$ref: '#/components/schemas/ApiPvrpluginEnquiryTokenPost200TextJsonResponse'
example: {}
application/xml:
schema:
$ref: '#/components/schemas/ApiPvrpluginEnquiryTokenPost200ApplicationXmlResponse'
example: <ApiPvrpluginEnquiryTokenPost200ApplicationXmlResponse />
text/xml:
schema:
$ref: '#/components/schemas/ApiPvrpluginEnquiryTokenPost200TextXmlResponse'
example: <ApiPvrpluginEnquiryTokenPost200TextXmlResponse />
/api/zoopla/partners/{token}:
post:
operationId: ZooplaPartnersApi_CreateZooplaPartner
summary: Creates a new Zoopla partner. This requires a "partner.create" permission
description: Creates a new Zoopla partner. This requires a "partner.create" permission
parameters:
- name: token
in: path
required: true
schema:
$ref: '#/components/schemas/Token'
description: Format - uuid. The authentication token
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ZooplaPartnerCreateRequest'
example:
BranchId: string
Name: string
responses:
'201':
description: Created - the partner was created
'400':
description: Bad Request - request parameters do not pass the validation
'401':
description: Unauthorized - token is invalid or expired
'403':
description: Forbidden - the authentication token is invalid
'404':
description: Not Found - the principal could not be found
'409':
description: Conflict - partner already exists
'500':
description: Internal Server Error - an unexpected error has occured
'503':
description: Service Unavailable - this or a dependent service is unavailable
/api/partners/{token}:
post:
operationId: PartnersApi_Post
summary: Creates a Partner-to-Account entry. Requires the "partner.modify" permission
description: Creates a Partner-to-Account entry. Requires the "partner.modify" permission
parameters:
- name: token
in: path
required: true
schema:
$ref: '#/components/schemas/Token'
description: Format - uuid. The authentication token
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerCreateRequest'
example:
accountApiKey: string
partnerId: string
partnerType: string
responses:
'201':
description: Created - the entry was created
'400':
description: Bad Request - the request parameters are not provided or are malformed
'401':
description: Unauthorized - token is invalid or expired
'403':
description: Forbidden - the authentication token doe not have enough rights to update the account's
branding
'409':
description: Conflict - a Partner with the same Partner ID and Type already exists
'500':
description: Internal Server Error - an unexpected error has occured
/api/pvrplugin/order/{token}:
post:
operationId: PvrPluginApi_GenerateOrder
summary: Creates a report for pvr plugin
description: Creates a report for pvr plugin
parameters:
- name: token
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GratisOrder'
example:
NodeId: 0
Firstname: string
Surname: string
EmailAddress: string
ValidationCode: string
Product:
Name: string
Type: string
Description: string
Price: 0
InputTypes: string
InputValues: string
ReportPostcode: string
ReportAddress: string
BrandName: string
BrandCode: string
Telephone: string
PreparedFor: string
text/json:
schema:
$ref: '#/components/schemas/GratisOrder'
example:
NodeId: 0
Firstname: string
Surname: string
EmailAddress: string
ValidationCode: string
Product:
Name: string
Type: string
Description: string
Price: 0
InputTypes: string
InputValues: string
ReportPostcode: string
ReportAddress: string
BrandName: string
BrandCode: string
Telephone: string
PreparedFor: string
application/xml:
schema:
$ref: '#/components/schemas/GratisOrder'
example: "<GratisOrder>\r\n <NodeId>0</NodeId>\r\n <Firstname>string</Firstname>\r\n <Surname>string</Surname>\r\
\n <EmailAddress>string</EmailAddress>\r\n <ValidationCode>string</ValidationCode>\r\n\
\ <Product>\r\n <Name>string</Name>\r\n <Type>string</Type>\r\n <Description>string</Description>\r\
\n <Price>0</Price>\r\n <InputTypes>string</InputTypes>\r\n <InputValues>string</InputValues>\r\
\n </Product>\r\n <ReportPostcode>string</ReportPostcode>\r\n <ReportAddress>string</ReportAddress>\r\
\n <BrandName>string</BrandName>\r\n <BrandCode>string</BrandCode>\r\n <Telephone>string</Telephone>\r\
\n <PreparedFor>string</PreparedFor>\r\n</GratisOrder>"
text/xml:
schema:
$ref: '#/components/schemas/GratisOrder'
example: "<GratisOrder>\r\n <NodeId>0</NodeId>\r\n <Firstname>string</Firstname>\r\n <Surname>string</Surname>\r\
\n <EmailAddress>string</EmailAddress>\r\n <ValidationCode>string</ValidationCode>\r\n\
\ <Product>\r\n <Name>string</Name>\r\n <Type>string</Type>\r\n <Description>string</Description>\r\
\n <Price>0</Price>\r\n <InputTypes>string</InputTypes>\r\n <InputValues>string</InputValues>\r\
\n </Product>\r\n <ReportPostcode>string</ReportPostcode>\r\n <ReportAddress>string</ReportAddress>\r\
\n <BrandName>string</BrandName>\r\n <BrandCode>string</BrandCode>\r\n <Telephone>string</Telephone>\r\
\n <PreparedFor>string</PreparedFor>\r\n</GratisOrder>"
application/x-www-form-urlencoded:
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiPvrpluginOrderTokenPost200ApplicationJsonResponse'
example: {}
text/json:
schema:
$ref: '#/components/schemas/ApiPvrpluginOrderTokenPost200TextJsonResponse'
example: {}
application/xml:
schema:
$ref: '#/components/schemas/ApiPvrpluginOrderTokenPost200ApplicationXmlResponse'
example: <ApiPvrpluginOrderTokenPost200ApplicationXmlResponse />
text/xml:
schema:
$ref: '#/components/schemas/ApiPvrpluginOrderTokenPost200TextXmlResponse'
example: <ApiPvrpluginOrderTokenPost200TextXmlResponse />
/api/brands/{token}/{targetAccountApiKey}:
put:
operationId: BrandsApi_Put
summary: Creates or updates the branding configuration for an account, based on the account's API
key
description: Creates or updates the branding configuration for an account, based on the account's
API key
parameters:
- name: token
in: path
required: true
schema:
type: string
description: The authentication token
- name: targetAccountApiKey
in: path
required: true
schema:
type: string
description: The API Key for the target account for which you want to update the branding
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BrandApiModel'
example:
brandName: string
branchName: string
branchAddress: string
branchPostcode: string
branchTelephoneNumber: string
branchEmailAddress: string
branchWebsite: string
reportName: string
hometrackLogoType: 0
reportHeading: string
reportText: string
terms: string
showValueRangeOnly: true
defaultContactDetails: string
frontPageComments: string
customerPVRConfiguration: 0
agentPVRConfiguration: 0
minimumConfidenceBand: string
brandLogoColour: string
highlightColour: string
accentColourIcons: true
logo: string
branchPhoto: string
text/json:
schema:
$ref: '#/components/schemas/BrandApiModel'
example:
brandName: string
branchName: string
branchAddress: string
branchPostcode: string
branchTelephoneNumber: string
branchEmailAddress: string
branchWebsite: string
reportName: string
hometrackLogoType: 0
reportHeading: string
reportText: string
terms: string
showValueRangeOnly: true
defaultContactDetails: string
frontPageComments: string
customerPVRConfiguration: 0
agentPVRConfiguration: 0
minimumConfidenceBand: string
brandLogoColour: string
highlightColour: string
accentColourIcons: true
logo: string
branchPhoto: string
responses:
'200':
description: OK - the account's branding configuration has been updated
'400':
description: Bad Request - request parameters do not pass the validation
'401':
description: Unauthorized - token is invalid or expired
'403':
description: Forbidden - the token does not have enough rights to update the account's branding
'404':
description: Not Found - the target account was not found
'500':
description: Internal Server Error - an unexpected error has occured
get:
operationId: BrandsApi_Get
summary: Retrieves the branding configuration associated to a given account
description: If a brand for the specific target account is not found, the default Hometrack brand
configuration is returned
parameters:
- name: token
in: path
required: true
schema:
type: string
description: The authentication token
- name: targetAccountApiKey
in: path
required: true
schema:
type: string
description: The API Key for the target account for which you want to retrieve the branding
responses:
'200':
description: OK - request completed successfully, includes model containing the requested brand
details
content:
application/json:
schema:
$ref: '#/components/schemas/BrandApiModel'
example:
brandName: string
branchName: string
branchAddress: string
branchPostcode: string
branchTelephoneNumber: string
branchEmailAddress: string
branchWebsite: string
reportName: string
hometrackLogoType: 0
reportHeading: string
reportText: string
terms: string
showValueRangeOnly: true
defaultContactDetails: string
frontPageComments: string
customerPVRConfiguration: 0
agentPVRConfiguration: 0
minimumConfidenceBand: string
brandLogoColour: string
highlightColour: string
accentColourIcons: true
logo: string
branchPhoto: string
'400':
description: Bad Request - request parameters do not pass the validation
content:
application/json:
schema:
type: string
'401':
description: Unauthorized - token is invalid or expired
content:
application/json:
schema:
type: string
'403':
description: Forbidden - the token does not have enough rights to update the account's branding
content:
application/json:
schema:
type: string
'404':
description: Not Found - the brand could not be found
content:
application/json:
schema:
type: string
'500':
description: Internal Server Error - an unexpected error has occured
content:
application/json:
schema:
type: string
/api/reporting/PropertyValuation/{token}/{transactionReference}:
get:
operationId: ReportingApi_RetrievePropertyValuationReport
summary: Downloads the previously generated Property Valuation Report file
description: Downloads the previously generated Property Valuation Report file
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Client's authentication token
- name: transactionReference
in: path
required: true
schema:
type: string
description: The report's transaction ID
responses:
'200':
description: OK - when the report is found and available, includes the binary file stream of
the PDF
content:
application/pdf:
schema:
$ref: '#/components/schemas/ApiReportingPropertyValuationTokenTransactionReferenceGet200ApplicationPdfRe'
application/xml:
schema:
$ref: '#/components/schemas/ApiReportingPropertyValuationTokenTransactionReferenceGet200ApplicationXmlRe'
example: <ApiReportingPropertyValuationTokenTransactionReferenceGet200ApplicationXmlRe />
'202':
description: Accepted - the report has not finished generating - try again later
content:
application/pdf:
schema:
$ref: '#/components/schemas/ApiReportingPropertyValuationTokenTransactionReferenceGet202ApplicationPdfRe'
application/xml:
schema:
$ref: '#/components/schemas/ApiReportingPropertyValuationTokenTransactionReferenceGet202ApplicationXmlRe'
example: <ApiReportingPropertyValuationTokenTransactionReferenceGet202ApplicationXmlRe />
'403':
description: Forbidden - the authentication token is invalid
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
'404':
description: Not Found - no record of transactionId found
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
'410':
description: Gone - the record for that transactionId was found, but the associated PDF file
cannot be found
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
'499':
description: Client Closed Request - production failed when the production of the report failed
for an unknown reason - please contact our customer support
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
'500':
description: Internal Server Error - an unexpected error has occured
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
'503':
description: Service Unavailable - this or a dependent service is unavailable
content:
application/pdf:
schema:
type: string
application/xml:
schema:
type: string
/api/reporting/TestGet:
get:
operationId: ReportingApi_TestGet
summary: For test purpose
description: For test purpose
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: '#/components/schemas/ApiReportingTestGetGet200ApplicationXmlResponse'
example: <ApiReportingTestGetGet200ApplicationXmlResponse />
text/xml:
schema:
$ref: '#/components/schemas/ApiReportingTestGetGet200TextXmlResponse'
example: <ApiReportingTestGetGet200TextXmlResponse />
application/json:
schema:
$ref: '#/components/schemas/ApiReportingTestGetGet200ApplicationJsonResponse'
example: {}
text/json:
schema:
$ref: '#/components/schemas/ApiReportingTestGetGet200TextJsonResponse'
example: {}
/api/reporting/TestPost:
post:
operationId: ReportingApi_TestPost
summary: For test purpose
description: For test purpose
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: '#/components/schemas/ApiReportingTestPostPost200ApplicationXmlResponse'
example: <ApiReportingTestPostPost200ApplicationXmlResponse />
text/xml:
schema:
$ref: '#/components/schemas/ApiReportingTestPostPost200TextXmlResponse'
example: <ApiReportingTestPostPost200TextXmlResponse />
application/json:
schema:
$ref: '#/components/schemas/ApiReportingTestPostPost200ApplicationJsonResponse'
example: {}
text/json:
schema:
$ref: '#/components/schemas/ApiReportingTestPostPost200TextJsonResponse'
example: {}
/api/reporting/PropertyValuation:
post:
operationId: ReportingApi_RequestPropertyValuationReport
summary: Requests a Property Valuation Report
description: Requests a Property Valuation Report
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PropertyValuationReportRequest'
example:
Address: string
Postcode: string
Bedrooms: 0
PropertyType: string
Receptions: 0
YearBuilt: 0
FloorArea: 0
ValuationDate: string
Bathrooms: 0
BrandCode: string
NoBill: true
NoBillSecret: string
PreparedFor: string
BranchId: string
Token: string
TransactionId: string
text/json:
schema:
$ref: '#/components/schemas/PropertyValuationReportRequest'
example:
Address: string
Postcode: string
Bedrooms: 0
PropertyType: string
Receptions: 0
YearBuilt: 0
FloorArea: 0
ValuationDate: string
Bathrooms: 0
BrandCode: string
NoBill: true
NoBillSecret: string
PreparedFor: string
BranchId: string
Token: string
TransactionId: string
responses:
'201':
description: Created - request accepted and property valuation processed
'400':
description: Bad Request - request parameters do not pass the validation
'402':
description: Payment Required - the license has lapsed or the report volume has been used up
'403':
description: Forbidden - the authentication token is invalid
'409':
description: Conflict - non-unique transaction ID is provided
'499':
description: Client Closed Request - production failed when the confidence level for the subject
property was lower than the minimum level specified in configuration
'500':
description: Internal Server Error - an unexpected error has occured
'503':
description: Service Unavailable - this or a dependent service is unavailable
/api/reporting/PropertyValuation/config/{token}:
get:
operationId: ReportingApi_GetPvrConfigurations
summary: Retrieves IDs and Names of PVR Configuration Umbraco nodes
description: 'Requires a PVR account type with permission: pvr.configuration.list'
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Client's authentication token
responses:
'200':
description: OK - Returns PVR Configurations
content:
application/json:
schema:
$ref: '#/components/schemas/PvrConfigsResponse'
example:
pvrConfigs:
- name: string
id: 0
pvrV2Configs:
- name: string
id: 0
'401':
description: Unauthorized - the authentication token is invalid
content:
application/json:
schema:
type: string
'403':
description: Forbidden - the account does not have permission
content:
application/json:
schema:
type: string
'500':
description: Internal Server Error - an unexpected error has occured
content:
application/json:
schema:
type: string
/api/partners/{token}/{partnerType}/{id}:
get:
operationId: PartnersApi_Get
summary: Retrieves the name and API key of the associated account
description: Retrieves the name and API key of the associated account
parameters:
- name: token
in: path
required: true
schema:
$ref: '#/components/schemas/Token'
description: Format - uuid. The authentication token
- name: partnerType
in: path
required: true
schema:
type: string
description: 'Accepted values: "zooplaBranch" or "PSG"'
- name: id
in: path
required: true
schema:
type: string
description: The Partner ID
responses:
'200':
description: OK - request completed successfully, includes the requested Partner details
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerResponse'
example:
partnerId: string
partnerType: string
apiKey: string
principalName: string
principalUniqueId: 00000000-0000-0000-0000-000000000000
createDate: string
modifyDate: string
'400':
description: Bad Request - the request parameters are not provided or are malformed
content:
application/json:
schema:
type: string
'401':
description: Unauthorized - token is invalid or expired
content:
application/json:
schema:
type: string
'403':
description: Forbidden - the authentication token doe not have enough rights to retrieve partner
details
content:
application/json:
schema:
type: string
'404':
description: Not Found - the partner could not be found
content:
application/json:
schema:
type: string
'500':
description: Internal Server Error - an unexpected error has occured
content:
application/json:
schema:
type: string
/api/licences/{token}/{product}:
get:
operationId: LicencesApi_Licences
summary: Returns all the product licences (valid, expired, blocked, etc...) which belong to the
authenticated client
description: Returns all the product licences (valid, expired, blocked, etc...) which belong to
the authenticated client
parameters:
- name: token
in: path
required: true
schema:
type: string
description: Client's authentication token
- name: product
in: path
required: true
schema:
type: string
descript
# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hometrack/refs/heads/main/openapi/hometrack-api-public-openapi.yml