Pricefinder · Authentication Profile
Pricefinder Authentication
Authentication
Pricefinder secures its APIs with oauth2 across 1 declared security scheme, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials, authorizationCode, and refreshToken flow(s).
Real EstateAustraliaPropTechProperty DataValuationAVMProperty ListingsRentalsLand RegistryTitleMortgageMarket Data
Methods: oauth2
Schemes: 1
OAuth flows: clientCredentials, authorizationCode, refreshToken
API key in:
Security Schemes
pricefinder_oauth2 oauth2
· flows: clientCredentials, authorizationCode, refreshToken
Source
Authentication Profile
generated: '2026-07-26'
method: searched
source: |
POST /oauth2/token operation description (HTML prose) in
openapi/pricefinder-api-swagger.json, plus live probes of
https://api.pricefinder.com.au/v1/auth/authorize.html (200) and
https://api.pricefinder.com.au/.well-known/openid-configuration (404), 2026-07-26.
docs: https://api.pricefinder.com.au/v1/swagger/index.html
summary:
types: [oauth2]
api_key_in: []
oauth2_flows: [clientCredentials, authorizationCode, refreshToken]
http_schemes: [basic, bearer]
self_serve: false
gate: application-approval — credentials are issued only under a negotiated
commercial subscription; there is no developer signup, free tier or sandbox key.
spec_gap: |
THE CONTRACT DECLARES NO securityDefinitions AND NO security BLOCK. This profile
could not be derived mechanically (0-working/derive-authentication.py returned zero
schemes for this provider) because the Swagger 2.0 document carries no security
metadata at all — despite every one of its 116 operations requiring a bearer token.
The entire OAuth 2.0 model is described in HTML prose inside a single operation
description. A machine reading this contract cannot determine how to authenticate;
a human has to read the rendered description field. This profile is the
human-readable model transcribed into machine-readable form by API Evangelist, and
is the correct target shape for a securityDefinitions block Pricefinder should
publish.
schemes:
- name: pricefinder_oauth2
type: oauth2
declared_in_spec: false
derived_from: POST /oauth2/token operation description (operationId getToken)
token_endpoint: https://api.pricefinder.com.au/v1/oauth2/token
token_endpoint_method: POST
token_request_content_type: application/x-www-form-urlencoded
flows:
- flow: clientCredentials
grant_type: client_credentials
required_parameters: [client_id, client_secret]
credential_model: |
client_id is the API user's Pricefinder username; client_secret is that user's
Pricefinder password. HTTP Basic auth is documented as an accepted alternative
to passing username and password as form parameters.
- flow: authorizationCode
grant_type: authorization_code
authorization_url: https://api.pricefinder.com.au/v1/auth/authorize.html
authorization_url_status: 200
required_parameters: [client_id, client_secret, redirect_uri, code]
request_parameters: [client_id, state, redirect_uri]
https_required: true
callback_success: "{redirect_uri}?state=<state>&code=<authorization_code>"
callback_denied: "{redirect_uri}?error=access_denied"
note: |
Three-legged delegated authorization — used to act on another Pricefinder
user's behalf. The hosted authorize page renders a "PriceFinder Login" screen
and is reachable anonymously (probed 200, 2026-07-26).
- flow: refreshToken
grant_type: refresh_token
required_parameters: [client_id, client_secret, refresh_token]
note: Consumes the refresh token and returns BOTH a new access token and a new
refresh token (rotating refresh tokens).
scopes: []
scopes_note: |
NO SCOPES. The contract defines no scope vocabulary, the token request accepts no
`scope` parameter, and no scopes/permissions reference page exists on any
Pricefinder surface. Authorization is all-or-nothing per credentialed user, with
entitlement enforced server-side by commercial subscription (see GET /features,
operationId getFeatures, which returns the calling user's UserFeatures
entitlement set). This is why no scopes/ artifact is emitted for Pricefinder.
token_presentation:
- style: header
example: 'Authorization: Bearer <access_token>'
preferred: true
- style: query
example: '?access_token=<access_token>'
note: |
Documented as a first-class alternative. Bearer tokens in query strings are
logged by proxies and appear in browser history and referrer headers — RFC 6750
section 5.3 and RFC 6819 both discourage it. Recorded as observed, not endorsed.
token_response:
schema: openapi/pricefinder-api-swagger.json#/definitions/ClientAccessToken
fields:
- {name: access_token, type: string}
- {name: token_type, type: string}
- {name: expires_in, type: string, note: typed as string, not integer, in the
contract}
- {name: refresh_token, type: string}
token_endpoint_errors:
- {status: 401, description: Invalid username/password}
- {status: 400, description: Bad Request}
openid_connect:
supported: false
discovery_probe:
url: https://api.pricefinder.com.au/.well-known/openid-configuration
status: 404
date: '2026-07-26'
authorization_server_metadata_probe:
url: https://api.pricefinder.com.au/.well-known/oauth-authorization-server
status: 404
date: '2026-07-26'
mutual_tls: false
api_keys: false
enforcement_evidence:
- {probe: 'GET https://api.pricefinder.com.au/v1/features', status: 401,
note: Anonymous call to a data path rejected.}
- {probe: 'GET https://api.pricefinder.com.au/v1/stubs/java', status: 401,
note: Even the client-library generator requires a token.}
- {probe: 'POST https://api.pricefinder.com.au/v1/oauth2/token (no credentials)',
status: 401, note: The token endpoint itself rejects anonymous callers.}
- {probe: 'GET https://api.pricefinder.com.au/v1/swagger.json', status: 200,
note: The CONTRACT is anonymous. The gate is on data, not on discovery.}
related:
conventions: conventions/pricefinder-conventions.yml
conformance: conformance/pricefinder-conformance.yml
well_known: well-known/pricefinder-well-known.yml