PEXA Plus Marketplace B2B API

The PEXA Plus Marketplace B2B API exposes marketplace services to business partners — health check, title search ordering and billing — under the PEXA Plus product. Published as an OpenAPI 3.0.3 contract (an OpenAPI 3.0.0 variant of the same document is also shipped in the portal) with a documented server at https://plus.pexa.com.au/api/plus/v1.

OpenAPI Specification

pexa-plus-marketplace-b2b-api-openapi.yaml Raw ↑
openapi: 3.0.3
info:
  version: 1.0.2
  title: PEXA Plus Marketplace B2B API
  description: PEXA Plus Marketplace services used by B2B applications
  contact:
    name: PEXA Plus team
    email: pexaplussupport@pexa.com.au
servers:
  - url: 'https://plus.pexa.com.au/api/plus/v1'
    description: Product server
tags:
  - name: HealthCheck
  - name: TitleSearch
  - name: Billing
paths:
  /health:
    get:
      tags:
        - HealthCheck
      summary: Health check
      description: |-
        Health check call to the service
        <br>[See details](../../docs/definitions/health_check/) to learn more about this API.
      operationId: getHealth
      parameters:
        - $ref: '#/components/parameters/SubscriberId'
      responses:
        '200':
          description: Confirms the service is up and running
        '500':
          $ref: '#/components/responses/InternalServerError'
  /title-search:
    post:
      tags:
        - TitleSearch
      summary: Create title search
      description: |-
        Creates a title search given a land title reference and a jurisdiction
        <br>[See details](../../docs/definitions/title_search/) to learn more about this API.
        <br>Please reach out to PEXA for Title search pricing
      operationId: createTitleSearch
      parameters:
        - $ref: '#/components/parameters/SubscriberId'
      requestBody:
        description: Create title search request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TitleSearch'
            examples:
              Create_Title_Search:
                value:
                  {
                    "landTitleReference": "100/789171",
                    "jurisdiction": "NSW",
                  }
              Create_Title_Search_With_Reference:
                value:
                  {
                    "landTitleReference": "100/789171",
                    "jurisdiction": "NSW",
                    "reference": "XYZ-APPLICATION",
                  }
      responses:
        '201':
          description: Created
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/TitleSearch'
              examples:
                Create_Title_Search:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "landTitleReference": "100/789171",
                      "jurisdiction": "NSW"
                    }
                Create_Title_Search_With_Reference:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "landTitleReference": "100/789171",
                      "jurisdiction": "NSW",
                      "reference": "XYZ-APPLICATION"
                    }
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          description: Unauthorised
        '403':
          description: Forbidden
        '405':
          description: Method not allowed
        '500':
          $ref: '#/components/responses/InternalServerError'
  /title-search/{titleSearchId}:
    get:
      tags:
        - TitleSearch
      summary: Retrieve title search by id
      description: |-
        Retrieve title search related to a requested id
        <br>[See details](../../docs/definitions/retrieve_title_search/) to learn more about this API.
      operationId: retrieveTitleSearch
      parameters:
        - $ref: '#/components/parameters/SubscriberId'
        - $ref: '#/components/parameters/TitleSearchIdPath'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TitleSearch'
              examples:
                Non_ReadyToRetrieve_Title_Search:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "landTitleReference": "100/789171",
                      "jurisdiction": "NSW",
                      "reference": "XYZ-APPLICATION",
                      "status": "PENDING"
                    }
                ReadyToRetrieve_Title_Search:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "landTitleReference": "11/111",
                      "jurisdiction": "NSW",
                      "reference": "XYZ-APPLICATION",
                      "status": "COMPLETE",
                      "landTitle": {
                        "orderReceivedDateTime": "2022-06-09T14:12:40.833+10:00",
                        "orderCompletedDateTime": "2022-06-09T15:12:40.833+10:00",
                        "enquiryId": "220609-LT0AM-0003U",
                        "landTitleData": {},
                        "contentType": "application/pdf",
                        "lotPlan": {
                          "landType": "LOT",
                          "lotNumber": "1",
                          "planNumber": "1",
                          "planType": "STRATA PLAN",
                          "text": "\n"
                        },
                        "planDetails": "",
                        "relatedProducts": [ {
                          "classification": "Plan Image",
                          "dealingNumber": "1",
                          "documentType": "SP",
                          "itemName": "1",
                          "itemType": "SP",
                          "searchKey": "1"
                        }],
                        "vendorDetails": ["ESTATE: LEASEHOLD ESTATE CREATED BY REDACTED", "", "ABC PTY LIMITED"]
                      }
                    }
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          description: Unauthorised
        '403':
          description: Forbidden
        '404':
          $ref: '#/components/responses/NotFoundError'
        '405':
          description: Method not allowed
        '500':
          $ref: '#/components/responses/InternalServerError'
  /title-search/{titleSearchId}/documents:
    get:
      tags:
        - TitleSearch
      summary: Retrieve title search documents by id
      description: |-
        Retrieve title search documents related to a requested id
        <br>[See details](../../docs/definitions/retrieve_title_search_documents/) to learn more about this API.
      operationId: retrieveTitleSearchDocuments
      parameters:
        - $ref: '#/components/parameters/SubscriberId'
        - $ref: '#/components/parameters/TitleSearchIdPath'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TitleSearchDocuments'
              examples:
                Non_ReadyToRetrieve_Title_Search_Document:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "documents": [
                        {
                          "status": "processing"
                        }
                      ]
                    }
                ReadyToRetrieve_Title_Search_Document:
                  value:
                    {
                      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                      "documents": [
                        {
                          "downloadLink": "http://mock-api-server:8080/pdf/dummy.pdf",
                          "status": "available"
                        }
                      ]
                    }
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          description: Unauthorised
        '403':
          description: Forbidden
        '404':
          $ref: '#/components/responses/NotFoundError'
        '405':
          description: Method not allowed
        '500':
          $ref: '#/components/responses/InternalServerError'
  /billing:
    get:
      tags:
        - Billing
      summary: Retrieve billing invoice
      description: |-
        Retrieve billing invoice related to given date and land title reference filters
        <br>[See details](../../docs/definitions/billing/) to learn more about this API.
      operationId: retrieveBilling
      parameters:
        - $ref: '#/components/parameters/SubscriberId'
        - $ref: '#/components/parameters/StartDateQuery'
        - $ref: '#/components/parameters/EndDateQuery'
        - $ref: '#/components/parameters/LandTitleReferenceQuery'
        - $ref: '#/components/parameters/ReferenceQuery'
        - $ref: '#/components/parameters/FormatQuery'
      responses:
        '200':
          description: Invoice of completed orders in specified date range
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
              examples:
                Valid_Invoice_Response:
                  value:
                    {
                      "invoice": {
                        "invoiceDate": "2022-05-09T16:09:53Z",
                        "invoiceDateRange": "2020-09-20T16:09:53Z - 2020-12-20T16:09:53Z",
                        "invoiceTotalCostExTax": {
                          "amount": 2250,
                          "currency": "AUD"
                        },
                        "invoiceTotalTax": {
                          "amount": 225,
                          "currency": "AUD"
                        },
                        "invoiceTotalCost": {
                          "amount": 2475,
                          "currency": "AUD"
                        },
                        "orderItems": [
                          {
                            "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
                            "reference": "ABC Reference",
                            "landTitleReference": "11/111",
                            "productTitle": "NSW Land Title Search",
                            "date": "2020-10-20T16:09:53Z",
                            "totalCostExTax": {
                              "amount": 1250,
                              "currency": "AUD"
                            },
                            "totalTax": {
                              "amount": 125,
                              "currency": "AUD"
                            },
                            "totalCost": {
                              "amount": 1375,
                              "currency": "AUD"
                            }
                          },
                          {
                            "id": "d290f1ee-6c54-4b01-90e6-d701748f0999",
                            "landTitleReference": "11/119",
                            "reference": "DEF Reference",
                            "productTitle": "NSW Land Title Search",
                            "date": "2020-11-20T16:09:53Z",
                            "totalCostExTax": {
                              "amount": 1000,
                              "currency": "AUD"
                            },
                            "totalTax": {
                              "amount": 100,
                              "currency": "AUD"
                            },
                            "totalCost": {
                              "amount": 1100,
                              "currency": "AUD"
                            }
                          }
                        ]
                      }
                    }
            application/pdf:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          description: Unauthorised
        '403':
          description: Forbidden
        '405':
          description: Method not allowed
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    SubscriberId:
      description: Subscriber id
      in: header
      name: X-Pexa-Subscriber-ID
      required: true
      schema:
        type: integer
        example: 12345
    TitleSearchIdPath:
      description: Title search id
      in: path
      name: titleSearchId
      required: true
      schema:
        type: string
        format: uuid
        example: 'd290f1ee-6c54-4b01-90e6-d701748f0851'
    StartDateQuery:
      description: The start date for the query range in RFC3339 format. Must be used together with `endDate`.
      in: query
      name: startDate
      required: true
      schema:
        type: string
        format: date-time
        example: '2020-09-20T16:09:53Z'
    EndDateQuery:
      description: The end date for the query range in RFC3339 format. Must be used together with `startDate`.
      in: query
      name: endDate
      required: true
      schema:
        type: string
        format: date-time
        example: '2020-12-20T16:09:53Z'
    LandTitleReferenceQuery:
      description: Land title reference for billing query (optional)
      in: query
      name: landTitleReference
      required: false
      schema:
        type: string
        example: '100/789171'
    ReferenceQuery:
      description: Reference for billing query (optional)
      in: query
      name: reference
      required: false
      schema:
        type: string
        example: 'ABC Reference'
    FormatQuery:
      description: Response format for billing query (optional)
      in: query
      name: format
      required: false
      schema:
        type: string
        example: 'pdf'
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
              - code: 'PL.TITSE.001'
                message: 'The land title reference provided is invalid for the jurisdiction.'
                field: 'landTitleReference'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
              - code: '500001'
                message: 'An internal error has occurred'
    NotFoundError:
      description: Not found error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          example:
            errors:
              - code: '404001'
                message: 'Invalid title search ID'
  schemas:
    TitleSearch:
      description: Title search
      type: object
      required:
        - landTitleReference
        - jurisdiction
      properties:
        id:
          description: Identifier of the title search order
          type: string
          format: uuid
          example: 'd290f1ee-6c54-4b01-90e6-d701748f0851'
        landTitleReference:
          description: Land title reference
          type: string
          example: '100/789171'
        jurisdiction:
          description: State of the property for the given land title reference
          type: string
          example: 'NSW'
        reference:
          description: Matter reference
          type: string
          example: 'XYZ-APPLICATION'
        status:
          description: Status of the title search
          type: string
          readOnly: true
          example: 'PENDING'
        landTitle:
          description: Land Title attributes
          type: object
          properties:
            orderReceivedDateTime:
              description: Date order received at 3rd party provider
              type: string
              example: '2022-06-09T14:12:40.833+10:00'
            orderCompletedDateTime:
              description: Date order completed at 3rd party provider
              type: string
              example: '2022-06-09T15:12:40.833+10:00'
            enquiryId:
              description: ID for this enquiry with the 3rd party provider
              type: string
              example: '220609-LT0AM-0003U'
            landTitleData:
              description: Json payload representing the land title data from the 3rd party provider
              type: object
            contentType:
              description: Content type
              type: string
              example: 'application/pdf'
            lotPlan:
              description: Lot plan
              type: object
              properties:
                landType:
                  description: Land type
                  type: string
                  example: 'LOT'
                lotNumber:
                  description: Lot number
                  type: string
                  example: '1'
                planNumber:
                  description: Plan number
                  type: string
                  example: '1'
                planType:
                  description: Plan type
                  type: string
                  example: 'STRATA PLAN'
                text:
                  description: Text
                  type: string
                  example: '\n'
            planDetails:
              description: Plan details
              type: string
              example: 'TBC...'
            relatedProducts:
              description: Related products
              type: array
              items:
                description: Related product
                type: object
                properties:
                  classification:
                    description: Classification
                    type: string
                    example: 'Plan Image'
                  dealingNumber:
                    description: Dealing number
                    type: string
                    example: '1'
                  documentType:
                    description: Document type
                    type: string
                    example: 'SP'
                  itemName:
                    description: Item name
                    type: string
                    example: '1'
                  itemType:
                    description: Item type
                    type: string
                    example: 'SP'
                  searchKey:
                    description: Search key
                    type: string
                    example: '1'
            vendorDetails:
              description: Vendor details
              type: array
              items:
                description: Vendor details
                type: string
                example: 'ESTATE: LEASEHOLD ESTATE CREATED BY AA123 EXPIRES 1/2/2022'
              minItems: 1
    TitleSearchDocuments:
      description: Title search documents
      type: object
      properties:
        id:
          description: Identifier of the title search order
          type: string
          format: uuid
          example: 'd290f1ee-6c54-4b01-90e6-d701748f0851'
        documents:
          description: Documents related to the title search order
          type: array
          items:
            description: Document related to the title search order
            type: object
            properties:
              downloadLink:
                description: Link to download the document related to the title search order
                type: string
                example: 'http://mock-api-server:8080/pdf/dummy.pdf'
              status:
                description: Status of the document related to the title search order
                type: string
                example: 'processing'
    Invoice:
      description: Invoice
      type: object
      properties:
        invoice:
          description: Invoice attributes
          type: object
          properties:
            invoiceDate:
              description: Date invoice created
              type: string
              format: date-time
              example: '2020-12-20T16:09:53Z'
            invoiceDateRange:
              description: Date range requested for invoice
              type: string
              example: '2020-09-20T16:09:53Z - 2020-12-20T16:09:53Z'
            invoiceTotalCostExTax:
              description: Invoice total cost excluding tax
              allOf:
                - $ref: '#/components/schemas/Money'
            invoiceTotalTax:
              description: Invoice total tax
              allOf:
                - $ref: '#/components/schemas/Money'
            invoiceTotalCost:
              description: Invoice total cost
              allOf:
                - $ref: '#/components/schemas/Money'
            orderItems:
              description: Ordered items
              type: array
              items:
                description: Ordered item
                type: object
                properties:
                  id:
                    description: Identifier of the title search order
                    type: string
                    format: uuid
                    example: 'd290f1ee-6c54-4b01-90e6-d701748f0851'
                  landTitleReference:
                    description: Land title reference
                    type: string
                    example: '11/111'
                  productTitle:
                    description: Product title
                    type: string
                    example: 'NSW Land Title Search'
                  date:
                    description: Date ordered item created
                    type: string
                    format: date-time
                    example: '2020-09-20T16:09:53Z'
                  totalCostExTax:
                    description: Ordered item total cost excluding tax
                    allOf:
                      - $ref: '#/components/schemas/Money'
                  totalTax:
                    description: Ordered item total tax
                    allOf:
                      - $ref: '#/components/schemas/Money'
                  totalCost:
                    description: Ordered item total cost
                    allOf:
                      - $ref: '#/components/schemas/Money'
    Errors:
      description: List of errors related to the API
      type: object
      properties:
        errors:
          description: Errors returned by the service
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/Error'
    Error:
      description: Detailed error related to the API
      type: object
      properties:
        code:
          description: The error code
          type: string
          example: 'PL.TITSE.001'
        message:
          description: Human-readable description of the error for debugging purposes
          type: string
          example: 'The land title reference provided is invalid for the jurisdiction.'
        field:
          description: Name of the field provided in the original request (if any) that the error pertains to
          type: string
          example: 'landTitleReference'
    Money:
      description: Represents an amount of money
      type: object
      properties:
        amount:
          description: The amount of money, in the smallest denomination of the currency indicated by `currency`. For example, when `currency` is `AUD`, `amount` is in cents.
          type: integer
          format: int64
          example: 1000
        currency:
          description: The type of currency, in ISO 4217 format
          type: string
          example: 'AUD'