Purplebricks Appointments API

The Appointments API from Purplebricks — 2 operation(s) for appointments.

Business capability
Showing & Open House Operations BC-4960.50

Operations 2

POST /v1/appointments Books a viewing appointment #
POST /v1/appointments/cancel Create appointments cancel #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/purplebricks-appointments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

purplebricks-appointments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Purplebricks.Viewings.Api 1.0 - Customer Experience…
  description: '### Purplebricks Viewings API.

    ### Purplebricks.Viewings.Api Git Repository'
  version: '1.0'
servers:
- url: https://api.purplebricks.co.uk/viewings-api
security:
- Bearer: []
tags:
- name: Appointments
paths:
  /v1/appointments:
    post:
      tags:
      - Appointments
      summary: Books a viewing appointment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.BookViewingInputModel'
          text/json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.BookViewingInputModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.BookViewingInputModel'
      responses:
        '201':
          description: The appointment was successfully created.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Purplebricks.Viewings.Business.ViewModels.BookViewingConfirmationViewModel'
            application/json:
              schema:
                $ref: '#/components/schemas/Purplebricks.Viewings.Business.ViewModels.BookViewingConfirmationViewModel'
            text/json:
              schema:
                $ref: '#/components/schemas/Purplebricks.Viewings.Business.ViewModels.BookViewingConfirmationViewModel'
        '400':
          description: The appointment request is invalid.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: The user is unauthorised.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '403':
          description: The appointment was not created because the property is sold or withdrawn.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '409':
          description: The appointment was not created because the viewing slot is not available.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '429':
          description: Too Many Requests
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
      operationId: postV1Appointments
      x-operation-id-source: derived
  /v1/appointments/cancel:
    post:
      tags:
      - Appointments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Commands.CancelViewingCommand'
          text/json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Commands.CancelViewingCommand'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Purplebricks.Viewings.Business.Commands.CancelViewingCommand'
      responses:
        '200':
          description: Success
      summary: Create appointments cancel
      x-summary-source: derived
      operationId: postV1AppointmentsCancel
      x-operation-id-source: derived
components:
  schemas:
    Purplebricks.DatabaseModel.Enumerations.BookingProcess:
      enum:
      - SellerBookValuation
      - BuyerBookViewing
      - CallCentreBookValuation
      - CallCentreBookViewing
      - SellerRearrange
      - BuyerRearrange
      - LpeRearrange
      - LpeBookViewing
      - BuyingAgentBookViewing
      - RemortgageInstantValuation
      - AiVoiceAgent
      - AiWhatsAppAgent
      - AiSmsAgent
      type: string
    Purplebricks.Viewings.Business.ViewModels.BookViewingConfirmationViewModel:
      type: object
      properties:
        eventId:
          type:
          - integer
          - 'null'
          format: int32
        propertyId:
          type:
          - integer
          - 'null'
          format: int32
        listingId:
          type:
          - string
          - 'null'
        status:
          $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.BookingRequestStatus'
        bookingProcess:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.BookingProcess'
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        propertyTimeZone:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.IanaTimeZone'
        street:
          type:
          - string
          - 'null'
        town:
          type:
          - string
          - 'null'
        county:
          type:
          - string
          - 'null'
        postcode:
          type:
          - string
          - 'null'
        isAccompaniedViewing:
          type: boolean
        hostName:
          type:
          - string
          - 'null'
        hostPhoneNumber:
          type:
          - string
          - 'null'
        expertPhoto:
          type:
          - string
          - 'null'
        trustPilotId:
          type:
          - string
          - 'null'
      additionalProperties: false
    Purplebricks.Viewings.Business.Commands.CancelViewingCommand:
      type: object
      properties:
        loggedInUserId:
          type: integer
          format: int32
        impersonatorUserId:
          type: integer
          format: int32
        viewingId:
          type: integer
          format: int32
        cancellationReason:
          type:
          - string
          - 'null'
      additionalProperties: false
    Purplebricks.DatabaseModel.Enumerations.ViewingAdditional.MortgageAgreementStatus:
      enum:
      - NotYetArranged
      - AgreedInPrinciple
      - PreQualified
      - PreApproved
      type: string
    Purplebricks.DatabaseModel.Enumerations.Offer.SaleProgressOption:
      enum:
      - NotOnTheMarket
      - OnTheMarket
      - SSTC
      - Pending
      type: string
    Purplebricks.DatabaseModel.Enumerations.IanaTimeZone:
      enum:
      - NotSet
      - EuropeLondon
      - AustraliaPerth
      - AustraliaEucla
      - AustraliaAdelaide
      - AustraliaBrokenHill
      - AustraliaDarwin
      - AustraliaBrisbane
      - AustraliaCurrie
      - AustraliaHobart
      - AustraliaLindeman
      - AustraliaMelbourne
      - AustraliaSydney
      - AustraliaLordHowe
      - AntarcticaMacquarie
      - AmericaLosAngeles
      - AmericaNewYork
      - AmericaDetroit
      - AmericaKentuckyLouisville
      - AmericaKentuckyMonticello
      - AmericaIndianaIndianapolis
      - AmericaIndianaVincennes
      - AmericaIndianaWinamac
      - AmericaIndianaMarengo
      - AmericaIndianaPetersburg
      - AmericaIndianaVevay
      - AmericaChicago
      - AmericaIndianaTellCity
      - AmericaIndianaKnox
      - AmericaMenominee
      - AmericaNorthDakotaCenter
      - AmericaNorthDakotaNewSalem
      - AmericaNorthDakotaBeulah
      - AmericaBoise
      - AmericaPhoenix
      - AmericaAnchorage
      - AmericaJuneau
      - AmericaSitka
      - AmericaYakutat
      - AmericaNome
      - AmericaAdak
      - AmericaMetlakatla
      - PacificHonolulu
      - AmericaDenver
      - PacificAuckland
      type: string
    Purplebricks.Viewings.Business.Models.BookingRequestStatus:
      enum:
      - SlotNotAvailable
      - Confirmed
      - AwaitingConfirmation
      - PropertySold
      - PropertyWithdrawn
      type: string
    Purplebricks.Viewings.Business.Models.BookViewingInputModel:
      type: object
      properties:
        appointmentId:
          type: string
          format: uuid
        propertyId:
          type: integer
          format: int32
        eventStart:
          type: string
          format: date-time
        contactDetails:
          $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.ViewingCustomerContactDetailsInputModel'
        tenantAdditionalData:
          $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.ViewingTenantAdditionalDataInputModel'
        buyerAdditionalData:
          $ref: '#/components/schemas/Purplebricks.Viewings.Business.Models.ViewingBuyerAdditionalDataInputModel'
        process:
          type:
          - string
          - 'null'
        viewingId:
          type: string
          format: uuid
        enquiryId:
          type:
          - string
          - 'null'
      additionalProperties: false
    Purplebricks.Viewings.Business.Models.ViewingCustomerContactDetailsInputModel:
      type: object
      properties:
        phoneHome:
          maxLength: 20
          type:
          - string
          - 'null'
        phoneOther:
          maxLength: 20
          type:
          - string
          - 'null'
        phoneMobile:
          maxLength: 20
          type:
          - string
          - 'null'
        primaryContactNumber:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.ContactNumberType'
      additionalProperties: false
    Purplebricks.DatabaseModel.Enumerations.Offer.EmploymentStatus:
      enum:
      - Employed
      - SelfEmployed
      - Retired
      - Student
      - DSS
      - Unemployed
      type: string
    Purplebricks.DatabaseModel.Enumerations.ViewingAdditional.ViewingPurpose:
      enum:
      - ToOccupy
      - DevelopmentOpportunity
      - BtlInvestment
      type: string
    Purplebricks.Viewings.Business.Models.ViewingTenantAdditionalDataInputModel:
      type: object
      properties:
        moveTimeframe:
          type:
          - string
          - 'null'
          format: date-time
        terms:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.Offer.TenantTerms'
        lettingTerms:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.Property.LettingTerms'
        employmentStatus:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.Offer.EmploymentStatus'
        poorCreditHistory:
          type: boolean
        havePets:
          type: boolean
        isSmoker:
          type: boolean
        otherPets:
          maxLength: 500
          type:
          - string
          - 'null'
      additionalProperties: false
    Microsoft.AspNetCore.Mvc.ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
    Purplebricks.DatabaseModel.Enumerations.Offer.TenantTerms:
      enum:
      - SixMonths
      - TwelveMonths
      - EighteenMonths
      - TwentyFourMonths
      type: string
    Purplebricks.DatabaseModel.Enumerations.ContactNumberType:
      enum:
      - Home
      - Mobile
      - Other
      type: string
    Purplebricks.DatabaseModel.Enumerations.Property.LettingTerms:
      enum:
      - SixMonths
      - OneYearOrMore
      type: string
    Purplebricks.Viewings.Business.Models.ViewingBuyerAdditionalDataInputModel:
      type: object
      properties:
        moveTimeframe:
          type: string
          format: date-time
        viewingPurpose:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.ViewingAdditional.ViewingPurpose'
        hasPortfolio:
          type:
          - boolean
          - 'null'
        propertyToSell:
          type: boolean
        saleProgression:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.Offer.SaleProgressOption'
        timeOnMarket:
          type:
          - string
          - 'null'
          format: date-time
        mortgageRequired:
          type: boolean
        mortgageStatus:
          $ref: '#/components/schemas/Purplebricks.DatabaseModel.Enumerations.ViewingAdditional.MortgageAgreementStatus'
        investmentConsented:
          type:
          - boolean
          - 'null'
        mabConsented:
          type: boolean
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: apiKey
      description: Authorization header using Bearer scheme
      name: Authorization
      in: header