Purplebricks Branch API

Portal syndication service exposing Rightmove, Zoopla and OnTheMarket branch records alongside property operations. This is the machine-readable trace of the UK no-MLS seam: an agency pushing branch and listing state into the portal duopoly rather than into a shared cooperative.

OpenAPI Specification

purplebricks-branch-v1-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Purplebricks.Branch.Api 1.0 - Squad Agents Experience
  description: '### Provides full branch information for a postcode or property

    ### [Purplebricks.Branch.Api Git Repository](https://dev.azure.com/purplebricks/BackEnd/_git/agents-mono)'
  version: '1.0'
paths:
  /v1/onthemarketbranch:
    get:
      tags:
      - OnTheMarketBranch
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnTheMarketBranchList'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/onthemarketbranch/{branchId}:
    get:
      tags:
      - OnTheMarketBranch
      parameters:
      - name: branchId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnTheMarketBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/onthemarketbranch/search:
    get:
      tags:
      - OnTheMarketBranch
      parameters:
      - name: propertyId
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnTheMarketBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/property/{propertyId}/rightmovebranch:
    get:
      tags:
      - Property
      parameters:
      - name: propertyId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightmoveBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/property/{propertyId}/zooplabranch:
    get:
      tags:
      - Property
      parameters:
      - name: propertyId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightmoveBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/property/{propertyId}/onthemarketbranch:
    get:
      tags:
      - Property
      parameters:
      - name: propertyId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnTheMarketBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/rightmovebranch:
    get:
      tags:
      - RightmoveBranch
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightmoveBranchList'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/rightmovebranch/{branchId}:
    get:
      tags:
      - RightmoveBranch
      parameters:
      - name: branchId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightmoveBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/rightmovebranch/search:
    get:
      tags:
      - RightmoveBranch
      parameters:
      - name: propertyId
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightmoveBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/zooplabranch:
    get:
      tags:
      - ZooplaBranch
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZooplaBranchList'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/zooplabranch/{branchId}:
    get:
      tags:
      - ZooplaBranch
      parameters:
      - name: branchId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZooplaBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/zooplabranch/search:
    get:
      tags:
      - ZooplaBranch
      parameters:
      - name: propertyId
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZooplaBranch'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    BranchService:
      enum:
      - NotSpecified
      - Sales
      - Lettings
      type: string
    OnTheMarketBranch:
      type: object
      properties:
        branchId:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
        postcodeArea:
          type: string
          nullable: true
        service:
          $ref: '#/components/schemas/BranchService'
        livePropertyIds:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
      additionalProperties: false
    OnTheMarketBranchList:
      type: object
      properties:
        count:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/OnTheMarketBranch'
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    RightmoveBranch:
      type: object
      properties:
        branchId:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
        postcodeArea:
          type: string
          nullable: true
        service:
          $ref: '#/components/schemas/BranchService'
        livePropertyIds:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
      additionalProperties: false
    RightmoveBranchList:
      type: object
      properties:
        count:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/RightmoveBranch'
          nullable: true
      additionalProperties: false
    ZooplaBranch:
      type: object
      properties:
        branchId:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
        service:
          $ref: '#/components/schemas/BranchService'
        livePropertyIds:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
      additionalProperties: false
    ZooplaBranchList:
      type: object
      properties:
        count:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/ZooplaBranch'
          nullable: true
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: apiKey
      description: Authorization header using Bearer scheme
      name: Authorization
      in: header
security:
- Bearer: []