Sprift · Arazzo Workflow

Sprift — enrich a CRM record with property data

Version 1.0.0

Resolve a held address to a UPRN and Sprift property ID, then enrich with EPC, council tax, nearby schools, nearby transport, TV availability and imagery.

1 workflow 1 source API 1 provider
View Spec View on GitHub Real EstateUnited KingdomPropTechProperty DataProperty ListingsValuationAVMLand RegistryConveyancingRentalsMortgageArazzoWorkflows

Provider

sprift

Workflows

crm-property-enrichment
Postcode → UPRN → propertyID → EPC, council tax, schools, transport, TV, maps
8 steps inputs: apiKey, postcode outputs: councilTax, epc, propertyId, schools, transport
1
resolve-postcode
$sourceDescriptions.sprift.SearchPropertiesByPostcode
2
resolve-property-id
$sourceDescriptions.sprift.Property-ID
3
epc
$sourceDescriptions.sprift.Property-EPC
4
council-tax
$sourceDescriptions.sprift.Property-Council-Tax
5
nearby-schools
$sourceDescriptions.sprift.Property-Nearby-School
6
nearby-transport
$sourceDescriptions.sprift.Property-Nearby-Transport
7
tv-availability
$sourceDescriptions.sprift.PropertyDetails-Tv
Takes the UPRN, not the propertyID.
8
maps
$sourceDescriptions.sprift.PropertyDetails-Maps

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Sprift — enrich a CRM record with property data
  version: 1.0.0
  summary: >-
    Resolve a held address to a UPRN and Sprift property ID, then enrich with EPC,
    council tax, nearby schools, nearby transport, TV availability and imagery.
  description: >-
    Authored by API Evangelist from Sprift's published Swagger 2.0 contract. Read-only
    and safe to schedule. Watch the identifier split: PropertyDetails-Tv takes the
    UPRN while the rest of the enrichment family takes Sprift's internal propertyID.
    Rate limits exist but are not quantified publicly — throttle when running this in
    bulk, and note that /api/v2/bulk is advertised but uncontracted.
sourceDescriptions:
- name: sprift
  url: ../openapi/sprift-openapi.json
  type: openapi
workflows:
- workflowId: crm-property-enrichment
  summary: Postcode → UPRN → propertyID → EPC, council tax, schools, transport, TV, maps
  inputs:
    type: object
    required:
    - apiKey
    - postcode
    properties:
      apiKey:
        type: string
        description: Sprift API key, sent as the SPRIFT-API-KEY header.
      postcode:
        type: string
        description: UK postcode held on the CRM record.
  steps:
  - stepId: resolve-postcode
    operationId: $sourceDescriptions.sprift.SearchPropertiesByPostcode
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: postcode
      in: path
      value: $inputs.postcode
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      matches: $response.body#/data
  - stepId: resolve-property-id
    operationId: $sourceDescriptions.sprift.Property-ID
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: uprn
      in: path
      value: $steps.resolve-postcode.outputs.matches[0].value
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      propertyId: $response.body#/property_id
  - stepId: epc
    operationId: $sourceDescriptions.sprift.Property-EPC
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: propertyID
      in: path
      value: $steps.resolve-property-id.outputs.propertyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      epc: $response.body#/epc
  - stepId: council-tax
    operationId: $sourceDescriptions.sprift.Property-Council-Tax
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: propertyID
      in: path
      value: $steps.resolve-property-id.outputs.propertyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      councilTax: $response.body#/councilTax
  - stepId: nearby-schools
    operationId: $sourceDescriptions.sprift.Property-Nearby-School
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: propertyID
      in: path
      value: $steps.resolve-property-id.outputs.propertyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      schools: $response.body#/nearby_schools
  - stepId: nearby-transport
    operationId: $sourceDescriptions.sprift.Property-Nearby-Transport
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: propertyID
      in: path
      value: $steps.resolve-property-id.outputs.propertyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      transport: $response.body#/nearby_transport
  - stepId: tv-availability
    description: Takes the UPRN, not the propertyID.
    operationId: $sourceDescriptions.sprift.PropertyDetails-Tv
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: uprn
      in: path
      value: $steps.resolve-postcode.outputs.matches[0].value
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      bt: $response.body#/bt
      sky: $response.body#/sky
      virgin: $response.body#/virgin
  - stepId: maps
    operationId: $sourceDescriptions.sprift.PropertyDetails-Maps
    parameters:
    - name: SPRIFT-API-KEY
      in: header
      value: $inputs.apiKey
    - name: propertyID
      in: path
      value: $steps.resolve-property-id.outputs.propertyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      mapWithPolygon: $response.body#/propertyMapWithPolygon
      satelliteImage: $response.body#/propertySatelliteImage
      streetViewImage: $response.body#/propertyStreetViewImage
  outputs:
    propertyId: $steps.resolve-property-id.outputs.propertyId
    epc: $steps.epc.outputs.epc
    councilTax: $steps.council-tax.outputs.councilTax
    schools: $steps.nearby-schools.outputs.schools
    transport: $steps.nearby-transport.outputs.transport