openapi: 3.0.3
info:
  title: Discovery API
  termsOfService: https://www.landata.online/terms-conditions-information-products/
  contact:
    email: legal@servictoria.com.au
  version: 1.9.0
externalDocs:
  description: Find out more about these services
  url: https://www.landata.online/help/
servers:
  - url: https://api.servictoria.io/ddp
    description: Production environment
  - url: https://test.api.servictoria.io/ddp
    description: Test environment
paths:
  /discovery/v1/properties:
    get:
      summary: GET properties
      description: >
        Get information about the matched properties including the associated
        titles and parcels.

        You may provide only one of the three identifiers - an address, Council
        Property Number (CPN) in combination with Municipality or Property
        Persistent Feature Identifier (PFI).

        This helps to confirm the right title and/or property before then making
        an order for available certificates.
      operationId: getProperties
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: propertyPfi
          in: query
          description: >
            Property Persistent Feature Identifier (PFI) which uniquely
            identifies a property. A PFI is generated by the state once for each
            property at the point of creation and remains constant until a
            property is retired.

            Only a single property will be returned when this identifier is
            used.

            This parameter cannot be used in conjunction with propertyNumber +
            municipalityName or eziAddress.
          required: false
          schema:
            type: string
            pattern: ^[0-9]{1,20}$
          example: '208045633'
        - name: propertyNumber
          in: query
          description: >
            Property Number assigned by the local government authority of the
            property. This parameter must always be paired with
            municipalityName. Also known as Council Property Number (CPN).

            Only a single property will be returned when this identifier is
            used.

            This parameter cannot be used in conjunction with propertyPfi or
            eziAddress.
          required: false
          schema:
            type: string
            maxLength: 20
            minLength: 1
          example: '603787'
        - name: municipalityName
          in: query
          description: >
            Municipality of the property. This parameter must always be paired
            with propertyNumber.

            Only a single property will be returned when this identifier is
            used.

            This parameter cannot be used in conjunction with propertyPfi or
            eziAddress.
          required: false
          schema:
            type: string
          example: MELBOURNE
        - name: eziAddress
          in: query
          description: >
            Property address as a single string (not broken into fields). It is
            the concatenation of key address attribute fields to provide a
            unique address for data matching. Format - blg_unit_*, house_*,
            road_name/type/suffix, plus locality & postcode fields.

            Multiple properties may be be returned when this identifier is used.

            This parameter cannot be used in conjunction with propertyNumber +
            municipalityName or propertyPfi.

            Note that a single property can have multiple addresses, e.g. 113
            MEW LANE BAMAWM 3561 and 50 TWADDLE LANE BAMAWM 3561

            An address can also be linked to multiple properties, such as
            BASEMENT 2 LONSDALE STREET MELBOURNE 3000.

            As a result, this identifier should be considered less specific than
            propertyPfi.
          required: false
          schema:
            type: string
          example: 328/800 SWANSTON STREET CARLTON 3053
        - name: premium
          in: query
          description: >
            For customers who have premium access, specifies whether to include
            premium-only results in the discovery responses.

            If set to true, premium information (such as unencrypted title IDs)
            will be included in the response.

            Note that enabling this option may incur discovery charges.
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - name: customer-id
          in: header
          description: >-
            Identifier of the customer this request is on behalf of. For premium
            discovery requests only.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 40
          example: '12345'
        - name: customer-reference
          in: header
          description: >-
            Optional description to identify a transaction, used for billing
            purposes. Note that we'll be providing a separate order ID once the
            order has been submitted. For premium discovery requests only.
          required: false
          schema:
            type: string
            maxLength: 40
            pattern: ^[0-9a-zA-Z-_&(),.@ ]+$
          example: customer-reference-001
        - name: idempotency-key
          in: header
          description: >
            Unique UUID used to prevent duplicate premium discovery orders. For
            premium discovery only.

            This allows requests to be retried after a network failure without
            accidentally submitting two premium discovery orders.

            If you receive a network error or timeout, you should resend the
            request with the same idempotency-key.

            If the server is still processing the original POST, you will
            receive 429 Too Many Requests.

            Idempotency keys expire after 24 hours.
          required: false
          schema:
            type: string
            format: uuid
          example: cc4d91e3-17af-4d11-b333-eb449e62ff07
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPropertiesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/titles:
    get:
      summary: GET titles
      description: >
        Get information about the matched titles including the associated
        properties and parcels.

        You can provide a Volume and Folio number or the encrypted title
        identifier provided from other discovery APIs.

        This supports confirmation of the right title and/or property.
      operationId: getTitles
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: titleId
          in: query
          description: >
            Title identifier, this can be either a volume/folio (eg:
            '10940/843') or an encrypted titleId as

            returned by operations on this API (eg:
            'qp0gjuieZ5VzbNKtT/eZvqPryobRkEYxMA==' - this example is valid

            for the TEST environment only). The encrypted titleId's value is not
            guaranteed to remain stable over time.

            Customers should avoid relying on its persistence or consistency
            across API calls or over extended periods.
          required: true
          schema:
            type: string
          example: 10940/843
        - name: premium
          in: query
          description: >
            For customers who have premium access, specifies whether to include
            premium-only results in the discovery responses.

            If set to true, premium information (unencrypted title IDs) will be
            included in the response.

            Note that enabling this option may incur discovery charges. Customer
            will not be charged if the titleId is a volume/folio, rather than an
            encrypted titleId.
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - name: customer-id
          in: header
          description: >-
            Identifier of the customer this request is on behalf of. For premium
            discovery requests only.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 40
          example: '12345'
        - name: customer-reference
          in: header
          description: >-
            Optional description to identify a transaction, used for billing
            purposes. Note that we'll be providing a separate order ID once the
            order has been submitted. For premium discovery requests only.
          required: false
          schema:
            type: string
            maxLength: 40
            pattern: ^[0-9a-zA-Z-_&(),.@ ]+$
          example: customer-reference-001
        - name: idempotency-key
          in: header
          description: >
            Unique UUID used to prevent duplicate premium discovery orders. For
            premium discovery only.

            This allows requests to be retried after a network failure without
            accidentally submitting two premium discovery orders.

            If you receive a network error or timeout, you should resend the
            request with the same idempotency-key.

            If the server is still processing the original POST, you will
            receive 429 Too Many Requests.

            Idempotency keys expire after 24 hours.
          required: false
          schema:
            type: string
            format: uuid
          example: cc4d91e3-17af-4d11-b333-eb449e62ff07
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTitlesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/parcels:
    get:
      summary: GET parcels
      description: >-
        Get information about the matched parcels including associated titles
        and properties. Provide a Standard Parcel Identifier (SPI).
      operationId: getParcels
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: spi
          in: query
          description: >
            A Standard Parcel Identifier (SPI) uniquely identifies a parcel. An
            SPI typically consists of either a Lot on Plan or a Crown Allotment.

            A Lot on Plan defines the allocated lot number on a particular plan.
            For example '101\PS328573' is lot 101 on the plan of subdivision
            328573.

            There are instances of an SPI not containing a lot, eg: 'TP109554'.

            A Crown Allotment parcel is defined by up to five different factors
            including Allotment, Block, Portion, Section and SubDivision.

            For example '12~10A\PP5762' is Allotment 12 in Section 10a on the
            Parish Plan 5762.

            If the input SPI contains a suffix character at the end and there is
            no matching parcel found, the suffix will be removed and the search
            retried.

            Note: due the backslash (\) in SPI's it's important URL encoded this
            parameter, many HTTP clients will do this automatically.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 24
          example: 3A2\PS515587
        - name: premium
          in: query
          description: >
            For customers who have premium access, specifies whether to include
            premium-only results in the discovery responses.

            If set to true, premium information (such as unencrypted title IDs)
            will be included in the response.

            Note that enabling this option may incur discovery charges.
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - name: customer-id
          in: header
          description: >-
            Identifier of the customer this request is on behalf of. For premium
            discovery requests only.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 40
          example: '12345'
        - name: customer-reference
          in: header
          description: >-
            Optional description to identify a transaction, used for billing
            purposes. Note that we'll be providing a separate order ID once the
            order has been submitted. For premium discovery requests only.
          required: false
          schema:
            type: string
            maxLength: 40
            pattern: ^[0-9a-zA-Z-_&(),.@ ]+$
          example: customer-reference-001
        - name: idempotency-key
          in: header
          description: >
            Unique UUID used to prevent duplicate premium discovery orders. For
            premium discovery only.

            This allows requests to be retried after a network failure without
            accidentally submitting two premium discovery orders.

            If you receive a network error or timeout, you should resend the
            request with the same idempotency-key.

            If the server is still processing the original POST, you will
            receive 429 Too Many Requests.

            Idempotency keys expire after 24 hours.
          required: false
          schema:
            type: string
            format: uuid
          example: cc4d91e3-17af-4d11-b333-eb449e62ff07
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetParcelsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/parcels/crown-allotments:
    get:
      summary: Retrieve Crown allotment parcels including parcel SPI
      description: >
        Retrieve a list of Crown allotment parcels that match the Crown
        allotment search criteria.

        The response includes each parcel's SPI, which can be used to obtain
        detailed parcel information.
      operationId: getParcelCrownAllotmentSearch
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: allotment
          description: >
            Crown Allotment descriptor.

            At least one of Allotment OR Portion OR Section MUST be provided

            Note that Allotment is a more specific identifier than Section and
            Portion, so may return a smaller, more specific list of Crown
            allotment parcels.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 10
            pattern: ^[A-Za-z0-9]{1,10}$
          example: H
        - name: section
          description: >
            Section is a part of the parcel descriptor. It is utilized in
            combination with either Lot and Plan number or Allotment and Parish
            code.

            Note that Section is less specific of an identifier than Allotment,
            so may return a larger, less specific list of Crown allotment
            parcels.

            At least one of Allotment OR Portion OR Section MUST be provided.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 12
            pattern: ^[A-Za-z0-9]{1,12}$
          example: '9'
        - name: portion
          description: >
            Crown Portion descriptor.

            Note that Portion is less specific of an identifier than Allotment,
            so may return a larger, less specific list of Crown allotment
            parcels.

            At least one of Allotment OR Portion OR Section MUST be provided.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 12
            pattern: ^[A-Za-z0-9]{1,12}$
          example: '105'
        - name: block
          description: >
            Crown Block descriptor.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 12
            pattern: ^[A-Za-z0-9]{1,12}$
          example: '1'
        - name: subdivision
          description: |
            Crown Subdivision descriptor.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 12
            pattern: ^[A-Za-z0-9]{1,12}$
          example: '16'
        - name: parishCode
          description: >
            Parish code.

            A list of parish names and their associated codes can be obtained
            from the GET /parishes endpoint.

            If only parishCode is used, townshipCode will not return in the
            response.

            At least one of Parish code OR Township code MUST be provided.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 4
            pattern: ^[0-9]{1,4}$
          example: '2796'
        - name: townshipCode
          description: >
            Township code.

            A list of township names and their associated codes can be obtained
            from the GET /townships endpoint.

            Note that townshipCode will only return in the response if
            townshipCode is used in the request

            At least one of Parish code OR Township code MUST be provided.
          required: false
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 5
            pattern: ^[A-Za-z0-9]{1,5}$
          example: 2796B
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCrownAllotmentSearchResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/proprietors:
    get:
      summary: GET proprietors
      description: |
        Get information about the matched proprietors and the associated titles.
      operationId: getProprietors
      security:
        - oauthClientCredentials:
            - proprietors:read
      parameters:
        - name: lastName
          in: query
          description: >
            Last name of the proprietor. Either last name or company name must
            be populated. This will search for individual with the provided
            input.

            The search is case insensitive.

            If a given name is not provided, the results will include
            proprietors with the matching last name, but any given name.
          required: false
          schema:
            type: string
            maxLength: 130
            minLength: 2
            pattern: >-
              ^(?![.,-]+$)[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]+[a-zA-Z0-9*+=?()@`&,.!#$
              ;/'\[\]"-]*[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]$
            description: >
              Last name can have alphanumeric and certain symbols, but it must
              not begin or end with a hyphen or apostrophe.

              (?![.,-]+$) : The last name does not consist solely of  ., ,, and
              -

              [a-zA-Z0-9*+=?()@`&,.!#$;\\[\\]\"/]+ : The last name must start
              with one or more valid characters: a-zA-Z, 0-9, *, +, =, :, ?, (),
              @, `, &, ,, ., !, $, #, ;, [, ], ", /

              [a-zA-Z0-9*+=?()@`&,.!#$ ;/'\\[\\]\"-]* : The last name can
              contain zero or more valid characters: same as before, plus -, '
              and spaces

              [a-zA-Z0-9*+=?()@`&,.!#$;\\[\\]\"/]$ : The last name must end with
              a valid character, excluding ' or -.
          example: Smith, Van Doorn, Ewing-Pistos, O'Reily
        - name: givenName
          in: query
          description: >
            Given name(s) of the proprietor. Can be used in conjunction with a
            last name.

            Not applicable for companies.
          required: false
          schema:
            type: string
            maxLength: 180
            minLength: 2
            pattern: ^[a-zA-Z][a-zA-Z\s'-]*[a-zA-Z]$
            description: >
              Given name(s) can have letters, spaces, hyphens, or apostrophes,
              but it must begin and end with a letter.

              ^[a-zA-Z] :  Must begin with a letter (uppercase or lowercase).

              [a-zA-Z\s'-]* : Can contain letters, spaces, hyphens, or
              apostrophes.

              [a-zA-Z]$ : Must end with a letter (uppercase or lowercase).
          example: Mary-Anne
        - name: companyName
          in: query
          description: >
            Company name. Either company name or last name must be populated.
            This will search for companies with the provided input.
          required: false
          schema:
            type: string
            maxLength: 130
            minLength: 2
            pattern: >-
              ^(?![.,-]+$)[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]+[a-zA-Z0-9*+=?()@`&,.!#$
              ;/'\[\]"-]*[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]$
            description: >
              Company name can have alphanumeric and certain symbols, but it
              must not begin or end with a hyphen or apostrophe.

              (?![.,-]+$) : The company name does not consist solely of  ., ,,
              and -

              [a-zA-Z0-9*+=?()@`&,.!#$;\\[\\]\"/]+ : The company name must start
              with one or more valid characters: a-zA-Z, 0-9, *, +, =, :, ?, (),
              @, `, &, ,, ., !, $, #, ;, [, ], ", /

              [a-zA-Z0-9*+=?()@`&,.!#$ ;/'\\[\\]\"-]* : The company name can
              contain zero or more valid characters: same as before, plus -, '
              and spaces

              [a-zA-Z0-9*+=?()@`&,.!#$;\\[\\]\"/]$ : The company name must end
              with a valid character, excluding ' or -.
          example: SERV
        - name: pageNumber
          in: query
          description: Page number starting at 1. Each page contains up to 200 results.
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProprietorsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/proprietor-names/individual:
    get:
      summary: GET individual proprietor names
      description: |
        Get information about the matched individual proprietor names.
      operationId: getProprietorNamesIndividual
      security:
        - oauthClientCredentials:
            - proprietors:read
      parameters:
        - name: lastName
          in: query
          description: |
            Last name of the proprietor.
          required: false
          schema:
            type: string
            maxLength: 130
            minLength: 2
            pattern: >-
              ^(?![.,-]+$)[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]+[a-zA-Z0-9*+=?()@`&,.!#$
              ;/'\[\]"-]*[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]$
          example: Smith
        - name: givenName
          in: query
          description: |
            Given name(s) of the proprietor.
          required: false
          schema:
            type: string
            maxLength: 180
            minLength: 2
            pattern: ^[a-zA-Z][a-zA-Z\s'-]*[a-zA-Z]$
          example: Mary-Anne
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProprietorNamesIndividualResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/proprietor-names/company:
    get:
      summary: GET company proprietor names
      description: |
        Get information about the matched company proprietor names.
      operationId: getProprietorNamesCompany
      security:
        - oauthClientCredentials:
            - proprietors:read
      parameters:
        - name: companyName
          in: query
          description: |
            Company name.
          required: false
          schema:
            type: string
            maxLength: 130
            minLength: 2
            pattern: >-
              ^(?![.,-]+$)[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]+[a-zA-Z0-9*+=?()@`&,.!#$
              ;/'\[\]"-]*[a-zA-Z0-9*+=?()@`&,.!#$;\[\]"/]$
          example: SERV
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProprietorNamesCompanyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/parishes:
    get:
      summary: GET parishes
      description: |
        Get information about all the available parishes.
      operationId: getParishes
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetParishesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /discovery/v1/townships:
    get:
      summary: GET townships
      description: |
        Get information about all the available townships.
      operationId: getTownships
      security:
        - oauthClientCredentials:
            - entities:read
            - entities:read:premium
      parameters:
        - name: x-correlation-id
          in: header
          description: >-
            Optional unique UUID which can assist with tracing / debugging
            requests.
          required: false
          schema:
            type: string
            format: uuid
          example: 824993ab-7366-4faa-963d-c456dec227a5
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTownshipsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        errorType:
          type: string
          description: Stable error code that can be used to decide how to hand an error.
          example: UNAUTHORIZED
        errorMessage:
          type: string
          description: Invalid Authorization token.
    AddressDetails:
      type: object
      properties:
        buildingName:
          type: string
          example: COMPANYX MAIN MALL
        unitType:
          type: string
          example: UNIT
        unitNumber:
          type: string
          example: 201A
        levelType:
          type: string
          example: GROUND
        levelNumber:
          type: string
          example: 30-36
        streetNumber:
          type: string
          example: '30'
        streetName:
          type: string
          example: BOURKE
        streetType:
          type: string
          example: STREET
        streetSuffix:
          type: string
          example: MALL
        suburbTownLocality:
          type: string
          example: MELBOURNE
        postcode:
          type: string
          example: '3000'
    AliasAddress:
      type: object
      properties:
        eziAddress:
          description: >-
            Property address as a single string (not broken into fields). It is
            the concatenation of key address attribute fields to provide a
            unique address for data matching. Format - blg_unit_*, house_*,
            road_name/type/suffix, plus locality & postcode fields.
          type: string
          example: 328/800 SWANSTON STREET CARLTON 3053
        addressDetails:
          $ref: '#/components/schemas/AddressDetails'
      required:
        - eziAddress
        - addressDetails
    CouncilPropertyDetails:
      type: object
      properties:
        propertyNumber:
          type: string
          description: >-
            Property Number assigned by the local government authority of the
            property. Also known as Council Property Number (CPN).
          example: '603787'
        municipalityName:
          type: string
          description: Municipality of the property.
          example: MELBOURNE
      required:
        - municipalityName
    PrimaryAddress:
      type: object
      properties:
        eziAddress:
          description: >-
            Property address as a single string (not broken into fields). It is
            the concatenation of key address attribute fields to provide a
            unique address for data matching. Format - blg_unit_*, house_*,
            road_name/type/suffix, plus locality & postcode fields.
          type: string
          example: UNIT 328 LEVEL 3 800 SWANSTON STREET CARLTON VIC 3053
        addressDetails:
          $ref: '#/components/schemas/AddressDetails'
      required:
        - eziAddress
        - addressDetails
    WaterAuthorities:
      type: object
      properties:
        metroWaterAuthority:
          type: string
          description: The metro water authority.
          example: YARRA VALLEY WATER
        regionalWaterAuthority:
          type: string
          description: The regional water authority.
          example: SOUTHERN RURAL WATER
        ruralWaterAuthority:
          type: string
          description: The rural water authority.
          example: EAST GIPPSLAND WATER
    Property:
      type: object
      description: >-
        The primary address of a property. Each property will always have a
        primary address. Properties may have more than one address, especially
        when on a corner, and in these instances, one address is declared the
        primary address, and any others will be aliases.
      properties:
        propertyPfi:
          type: string
          description: >-
            Property persistent feature identifier (PFI) which uniquely
            identifies a property.
          example: '208045633'
        isMultiAssess:
          type: boolean
          example: true
        propertyStatus:
          type: string
          enum:
            - ACTIVE
            - PROPOSED
          description: Status of the property.
          example: ACTIVE
      required:
        - propertyPfi
        - isMultiAssess
        - propertyStatus
    PropertySummary:
      type: object
      properties:
        propertyPfi:
          type: string
          description: >-
            Property persistent feature identifier (PFI) which uniquely
            identifies a property.
          example: '208045633'
        propertyStatus:
          type: string
          description: >
            The status of a property identifies whether it is active or
            proposed.

            Proposed properties are attached to proposed parcels. This is where
            a parcel sub-division has not yet been fully completed but has gone
            through a significant way through the approval stage and so
            recognised as proposed.
          enum:
            - ACTIVE
            - PROPOSED
          example: ACTIVE
        isCouncilPropertyRegistered:
          type: boolean
          description: >
            This identifies whether the property has an associated Council
            Property Number (true) or not (false). There are properties which do
            not have a council property number and are typically common property
            areas of apartments and as such, cannot be bought or sold.

            If false then the councilPropertyDetails section will be omitted
          example: true
        councilPropertyDetails:
          $ref: '#/components/schemas/CouncilPropertyDetails'
        isMultiAssess:
          type: boolean
          description: >-
            If the property is known as Multi-assessment, then this is where
            more than one property belong to the same parcel. A typical example
            might be where individual shops belong in a shopping centre
            property.
          example: true
        propertyCreatedDate:
          type: string
          description: Date the property and its PFI was created by the state.
          example: '2012-10-03 02:17:46'
        primaryAddress:
          $ref: '#/components/schemas/PrimaryAddress'
        aliasAddresses:
          type: array
          items:
            $ref: '#/components/schemas/AliasAddress'
          description: >-
            List of alias addresses associated with the requested property.
            Note, if a property has no alias addresses, an empty array will be
            returned.
        waterAuthorities:
          $ref: '#/components/schemas/WaterAuthorities'
        landParcels:
          type: array
          items:
            $ref: '#/components/schemas/LandParcel'
          description: >
            List of parcels associated with the requested property(s).

            A parcel is generally a piece of physical land as defined by a
            geographic shape. It is also possible for a parcel to not be a
            physical piece of ground, but be defined also by where it is
            vertically.

            Note, if no associated parcels are found, an empty array will be
            returned.
        titles:
          type: array
          items:
            $ref: '#/components/schemas/Title'
          description: >-
            List of titles associated with the requested property(s). Note, if
            no associated titles are found, an empty array will be returned.
      required:
        - propertyPfi
        - propertyStatus
        - isCouncilPropertyRegistered
        - isMultiAssess
        - propertyCreatedDate
        - primaryAddress
        - landParcels
        - titles
    GetPropertiesResponse:
      type: object
      properties:
        propertySummaries:
          type: array
          items:
            $ref: '#/components/schemas/PropertySummary'
        orderSummary:
          $ref: '#/components/schemas/OrderSummary'
      required:
        - propertySummaries
    Title:
      type: object
      properties:
        titleId:
          type: string
          description: >
            An encrypted title identifier. Access to Vol/Fol is available only
            for premium discovery due to associated charges.

            This value is not guaranteed to remain stable over time. Customers
            should avoid relying on its persistence or consistency across API
            calls or over extended periods.
          example: qp0gjuieZ5VzbNKtT/eZvqPryobRkEYxMA==
        volumeFolio:
          type: string
          description: >
            For premium discovery responses, this field contains the
            Volume/Folio (Vol/Fol) of a title.
          example: 10940/843
        titleStatus:
          type: string
          description: >-
            The status of the title informs whether it is currently active, has
            become cancelled or partially cancelled.
          enum:
            - ACTIVE
            - CANCELLED
            - PARTIALLY_CANCELLED
          example: ACTIVE
        titleType:
          type: string
          description: >
            Describes the ownership type of the title, the main two being
            Freehold for property owned by individuals and companies, and Crown
            land which is administered by public authorities.
          enum:
            - ALPINE_LEASE
            - CITY_LINK_LEASE
            - CROWN_GRANT
            - CROWN_LAND
            - CROWN_LEASE
            - FREEHOLD
            - IDENTIFIED
            - MINERAL_EXCLUDES
            - MINERAL_INCLUDES
            - TREASURERS_RECEIPT
          example: FREEHOLD
      required:
        - titleId
        - titleStatus
        - titleType
    TitleReference:
      type: object
      description: >
        The identifier of a title made up of a volume number and a folio number
        separated by a slash. It is the numbering system used for titles, Crown
        Grants, Crown Leases and Mineral Leases. If volume folio was provided in
        the search, then, this field will return volume folio
      properties:
        volume:
          type: integer
          description: >-
            The volume number containing the title. This originates from
            physical books named volumes, containing sections known as folios.
        folio:
          type: integer
          description: This can represent plan number, dealing number, document number etc.
        suffix:
          type: string
          description: Unique id to identify authority who owns the product
    TitleSummary:
      type: object
      properties:
        titleId:
          type: string
          description: >
            An encrypted title identifier. Access to Vol/Fol is available only
            for premium discovery due to associated charges.

            This value is not guaranteed to remain stable over time. Customers
            should avoid relying on its persistence or consistency across API
            calls or over extended periods.
          example: qp0gjuieZ5VzbNKtT/eZvqPryobRkEYxMA==
        volumeFolio:
          type: string
          description: >
            For premium discovery responses, this field contains the
            Volume/Folio (Vol/Fol) of a title.
          example: 10940/843
        titleStatus:
          type: string
          description: >-
            The status of the title informs whether it is currently active, has
            become cancelled or partially cancelled.
          enum:
            - ACTIVE
            - CANCELLED
            - PARTIALLY_CANCELLED
          example: ACTIVE
        titleType:
          type: string
          description: >
            Describes the ownership type of the title, the main two being
            Freehold for property owned by individuals and companies, and Crown
            land which is administered by public authorities.
          enum:
            - ALPINE_LEASE
            - CITY_LINK_LEASE
            - CROWN_GRANT
            - CROWN_LAND
            - CROWN_LEASE
            - FREEHOLD
            - IDENTIFIED
            - MINERAL_EXCLUDES
            - MINERAL_INCLUDES
            - TREASURERS_RECEIPT
          example: FREEHOLD
        titleReference:
          $ref: '#/components/schemas/TitleReference'
        copyOfTitleType:
          type: string
          description: >-
            The certificate of title may either be stored only electronically in
            the the Victorian Online Titles System (VOTS) or a duplicate may
            exist in physical paper format.
          enum:
            - ELECTRONIC
            - PAPER
        titleStreetAddress:
          type: string
          description: Address recorded against the title
          example: UNIT 328 LEVEL 3 800 SWANSTON STREET CARLTON VIC 3053
        landDescriptionText:
          type: string
          description: >-
            The parcel(s) associated with the title are described in the Land
            Description.
          example: Lot 3A2 on Plan of Subdivision 515587S.
        landParcels:
          type: array
          items:
            $ref: '#/components/schemas/LandParcel'
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
      required:
        - titleId
        - titleStatus
        - titleType
        - copyOfTitleType
    GetTitlesResponse:
      type: object
      properties:
        titleSummaries:
          type: array
          items:
            $ref: '#/components/schemas/TitleSummary'
        orderSummary:
          $ref: '#/components/schemas/OrderSummary'
      required:
        - titleSummaries
    LandParcel:
      type: object
      properties:
        spi:
          type: string
          description: >
            A Standard Parcel Identifier (SPI) uniquely identifies a parcel. An
            SPI typically consists of either a Lot on Plan or a Crown Allotment.

            A Lot on Plan defines the allocated lot number on a particular plan.
            For example '101\PS328573' is lot 101 on the plan of subdivision
            328573.

            There are instances of an SPI not containing a lot, eg: 'TP109554'.

            A Crown Allotment parcel is defined by up to five different factors
            including Allotment, Block, Portion, Section and SubDivision.

            For example '12~10A\PP5762' is Allotment 12 in Section 10a on the
            Parish Plan 5762.
          example: 3A2\PS515587
        parcelType:
          type: string
          description: >-
            The parcel types determine what can be done with the parcel. The
            type can be a lot (a normal parcel of land), a unit (belonging to an
            apartment development), Common property (jointly owned land as
            defined by something such as a body corporate), roads or reserves.
          enum:
            - COMMON_PROPERTY
            - LOT
            - RESERVE
            - ROAD
            - UNIT
          example: LOT
        lotType:
          type: string
          description: >-
            The lot type gives an indication of the use of the parcel or
            describes any lot limitations. Generally when the parcel has a
            parcel type of ‘lot’ or ‘unit’. They can be restricted (meaning it
            must be sold with another parcel), unrestricted (it does not need to
            be sold along with another parcel), an accessory unit like a storage
            area in an apartment complex or a carpark.
          enum:
            - ACCESSORY_UNIT
            - CARPARK
            - RESTRICTED
            - UNRESTRICTED
          example: RESTRICTED
        parcelStatus:
          type: string
          description: >
            The status of a parcel identifies whether it is active or proposed.

            This is where a parcel sub-division has not yet been fully completed
            but has gone through a significant way through the approval stage
            and so recognised as proposed.
          enum:
            - ACTIVE
            - PROPOSED
          example: ACTIVE
        lot:
          type: string
          example: 3A2
        planNumber:
          type: string
          example: PS515587S
        parish:
          type: string
          description: Parish name.
          example: YEO
        township:
          type: string
          description: Township name.
          example: BARWON DOWNS TP
        allotment:
          type: string
          description: |
            Crown Allotment.
            Crown Allotment descriptor.
          example: 15D
        block:
          type: string
          description: >
            Crown Block.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: '1'
        section:
          type: string
          description: >
            Section.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: A
        portion:
          type: string
          description: |
            Crown Portion.
            Crown Portion descriptor.
          example: '105'
        subdivision:
          type: string
          description: |
            Crown Subdivision.
            Crown Subdivision descriptor.
          example: '16'
      required:
        - spi
    ParcelDetails:
      type: object
      properties:
        lot:
          type: string
          example: 3A2
        planNumber:
          type: string
          example: PS515587S
        parish:
          type: string
          description: Parish name.
          example: YEO
        township:
          type: string
          description: Township name.
          example: BARWON DOWNS TP
        allotment:
          type: string
          description: |
            Crown Allotment.
            Crown Allotment descriptor.
          example: 15D
        block:
          type: string
          description: >
            Crown Block.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: '1'
        section:
          type: string
          description: >
            Section.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: A
        portion:
          type: string
          description: |
            Crown Portion.
            Crown Portion descriptor.
          example: '105'
        subdivision:
          type: string
          description: |
            Crown Subdivision.
            Crown Subdivision descriptor.
          example: '16'
    GetParcelsResponse:
      type: object
      properties:
        spi:
          type: string
          description: >
            A Standard Parcel Identifier (SPI) uniquely identifies a parcel. An
            SPI typically consists of either a Lot on Plan or a Crown Allotment.

            A Lot on Plan defines the allocated lot number on a particular plan.
            For example '101\PS328573' is lot 101 on the plan of subdivision
            328573.

            There are instances of an SPI not containing a lot, eg: 'TP109554'.

            A Crown Allotment parcel is defined by up to five different factors
            including Allotment, Block, Portion, Section and SubDivision.

            For example '12~10A\PP5762' is Allotment 12 in Section 10a on the
            Parish Plan 5762.
          example: 3A2\PS515587
        parcelType:
          type: string
          description: >-
            The parcel types determine what can be done with the parcel. The
            type can be a lot (a normal parcel of land), a unit (belonging to an
            apartment development), Common property (jointly owned land as
            defined by something such as a body corporate), roads or reserves.
          enum:
            - COMMON_PROPERTY
            - LOT
            - RESERVE
            - ROAD
            - UNIT
          example: LOT
        lotType:
          type: string
          description: >-
            The lot type gives an indication of the use of the parcel or
            describes any lot limitations. Generally when the parcel has a
            parcel type of ‘lot’ or ‘unit’. They can be restricted (meaning it
            must be sold with another parcel), unrestricted (it does not need to
            be sold along with another parcel), an accessory unit like a storage
            area in an apartment complex or a carpark.
          enum:
            - ACCESSORY_UNIT
            - CARPARK
            - RESTRICTED
            - UNRESTRICTED
          example: RESTRICTED
        parcelStatus:
          type: string
          description: >
            The status of a parcel identifies whether it is active or proposed.

            This is where a parcel sub-division has not yet been fully completed
            but has gone through a significant way through the approval stage
            and so recognised as proposed.
          enum:
            - ACTIVE
            - PROPOSED
          example: ACTIVE
        isPartParcel:
          type: boolean
          description: If true, only partial data available for this parcel
        parcelDetails:
          $ref: '#/components/schemas/ParcelDetails'
        titles:
          type: array
          items:
            $ref: '#/components/schemas/Title'
          description: |
            List of titles associated with the requested property(s).
            If no associated titles are found an empty array will be returned.
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        orderSummary:
          $ref: '#/components/schemas/OrderSummary'
      required:
        - spi
        - parcelDetails
    GetProprietorsResponse:
      type: object
      properties:
        proprietorSummaries:
          type: array
          items:
            $ref: '#/components/schemas/ProprietorSummary'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - proprietorSummaries
        - pagination
    GetProprietorNamesIndividualResponse:
      type: object
      properties:
        proprietorNames:
          type: array
          items:
            $ref: '#/components/schemas/ProprietorNameIndividualName'
      required:
        - proprietorNames
    ProprietorNameIndividualName:
      type: object
      properties:
        lastName:
          type: string
          description: |
            Proprietor's last name.
        givenName:
          type: string
          description: >
            Proprietor's given name.

            This can be empty if no given name is found or last name contains
            full name.
    GetProprietorNamesCompanyResponse:
      type: object
      properties:
        proprietorNames:
          type: array
          items:
            $ref: '#/components/schemas/ProprietorNameCompanyName'
      required:
        - proprietorNames
    ProprietorNameCompanyName:
      type: object
      properties:
        companyName:
          type: string
          description: |
            Company name.
    ProprietorSummary:
      type: object
      properties:
        lastName:
          type: string
          description: |
            Proprietor's last name.
          example: Armstrong
        givenName:
          type: string
          description: |
            Proprietor's given name.
          example: Nathan
        companyName:
          type: string
          description: |
            Company name.
        titleDetails:
          $ref: '#/components/schemas/TitleDetails'
      required:
        - titleDetails
    GetParishesResponse:
      type: object
      properties:
        parishSummaries:
          type: array
          items:
            $ref: '#/components/schemas/ParishSummary'
      required:
        - parishSummaries
    ParishSummary:
      type: object
      properties:
        name:
          type: string
          description: |
            The parish name.
          example: WHITFIELD SOUTH
        code:
          type: string
          description: |
            The parish code.
          example: '1234'
      required:
        - name
        - code
    GetTownshipsResponse:
      type: object
      properties:
        townshipSummaries:
          type: array
          items:
            $ref: '#/components/schemas/TownshipSummary'
      required:
        - townshipSummaries
    TownshipSummary:
      type: object
      properties:
        name:
          type: string
          description: |
            The township name.
          example: CAMPBELLTOWN TP
        code:
          type: string
          description: |
            The township code.
          example: '5678'
      required:
        - name
        - code
    TitleDetails:
      type: object
      properties:
        titleId:
          type: string
          description: >
            An encrypted title identifier. Access to Vol/Fol is available only
            for premium discovery due to associated charges.

            This value is not guaranteed to remain stable over time. Customers
            should avoid relying on its persistence or consistency across API
            calls or over extended periods.
          example: qp0gjuieZ5VzbNKtT/eZvqPryobRkEYxMA==
        volumeFolio:
          type: string
          description: >
            For premium discovery responses, this field contains the
            Volume/Folio (Vol/Fol) of a title.
          example: 10940/843
        titleStatus:
          type: string
          description: >
            The status of the title informs whether it is currently active, has
            become cancelled or partially cancelled.
          enum:
            - ACTIVE
            - CANCELLED
            - PARTIALLY_CANCELLED
          example: ACTIVE
        titleType:
          type: string
          description: >
            Describes the ownership type of the title, the main two being
            Freehold for property owned by individuals and companies, and Crown
            land which is administered by public authorities.
          enum:
            - ALPINE_LEASE
            - CITY_LINK_LEASE
            - CROWN_GRANT
            - CROWN_LAND
            - CROWN_LEASE
            - FREEHOLD
            - IDENTIFIED
            - MINERAL_EXCLUDES
            - MINERAL_INCLUDES
            - TREASURERS_RECEIPT
          example: FREEHOLD
        landDescriptionText:
          type: string
          description: >
            The parcel(s) associated with the title are described in the Land
            Description.
          example: Lot 3A2 on Plan of Subdivision 515587S.
        municipality:
          type: string
          description: |
            The municipality of the title.
          example: GREATER BENDIGO
      required:
        - titleId
        - titleStatus
        - titleType
    ParcelCrownDescription:
      type: object
      properties:
        spi:
          type: string
          description: >
            A Standard Parcel Identifier (SPI) uniquely identifies a parcel. An
            SPI typically consists of either a Lot on Plan or a Crown Allotment.

            A Lot on Plan defines the allocated lot number on a particular plan.
            For example '101\PS328573' is lot 101 on the plan of subdivision
            328573.

            There are instances of an SPI not containing a lot, eg: 'TP109554'.

            A Crown Allotment parcel is defined by up to five different factors
            including Allotment, Block, Portion, Section and SubDivision.

            For example '12~10A\PP5762' is Allotment 12 in Section 10a on the
            Parish Plan 5762.
          example: 3A2\PS515587
        allotment:
          type: string
          description: |
            Crown Allotment.
            Crown Allotment descriptor.
          example: 15D
        section:
          type: string
          description: >
            Section.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: A
        portion:
          type: string
          description: |
            Crown Portion.
            Crown Portion descriptor.
          example: '105'
        block:
          type: string
          description: >
            Crown Block.

            A part of the parcel descriptor. It is utilized in combination with
            either Lot and Plan number or Allotment and Parish code.
          example: '1'
        subdivision:
          type: string
          description: |
            Crown Subdivision.
            Crown Subdivision descriptor.
          example: '16'
        parishCode:
          type: string
          description: Parish code.
          example: '3987'
        parishName:
          type: string
          description: Parish name.
          example: YEO
        townshipCode:
          type: string
          description: Township code.
          example: '5051'
        townshipName:
          type: string
          description: Township name.
          example: BARWON DOWNS TP
      required:
        - spi
    GetCrownAllotmentSearchResponse:
      type: object
      properties:
        crownAllotmentSummaries:
          type: array
          items:
            $ref: '#/components/schemas/ParcelCrownDescription'
      required:
        - parcelSummaries
    Pagination:
      type: object
      properties:
        pageSize:
          type: integer
          description: |
            Total number of records per page.
        nextPage:
          type: integer
          description: |
            Number for the next page.
          example: 2
      required:
        - pageSize
    OrderSummary:
      type: object
      properties:
        orderId:
          type: string
          description: Unique number to identify an order.
          example: '10219435'
        totalPrice:
          type: integer
          description: The total price (in cents) for this order (including gst).
          example: 891
        totalGst:
          type: integer
          description: The total GST amount (in cents) for this order.
          example: 89
      required:
        - orderId
        - totalPrice
        - totalGst
  securitySchemes:
    oauthClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.servictoria.com.au/oauth/token
          scopes:
            entities:read: >-
              This permission allows access to perform searches for title,
              parcel, and property information.
            entities:read:premium: >-
              This permission includes all the capabilities of entities:read
              with the addition of premium information in the responses.
            proprietors:read: This permission allows access to perform proprietor searches.
