{"openapi":"3.1.0","info":{"title":"Sessional Addresses","version":"1.0.0","license":{"name":"MIT","identifier":"MIT"},"description":"Australian address lookup using G-NAF. Incorporates or developed using G-NAF © Geoscape Australia licensed by the Commonwealth of Australia under the Open Geo-coded National Address File (G-NAF) End User Licence Agreement. MIT covers the software; address data remains subject to the G-NAF licence."},"servers":[{"url":"https://addresses.sessional.au"}],"security":[{"ApiKeyHeader":[]},{"BearerAuth":[]}],"paths":{"/v1/addresses":{"get":{"operationId":"searchAddresses","summary":"Search addresses","description":"Supply exactly one of q or postcode. They are mutually exclusive. Text search uses word-level AND matching with a default limit of 8 and a cap of 20. Postcode listing defaults to 100 and caps at 500. Offset pagination is not implemented in the current route.","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":200},"description":"Address text. Required when postcode is absent.","example":"example street"},{"name":"postcode","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}$"},"description":"Four digits. Required when q is absent."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Text: default 8, cap 20. Postcode: default 100, cap 500. Larger values are capped.","example":8},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Reserved for postcode pagination. Currently ignored by the server.","x-status":"preview"}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Address"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"uprn":"GNAF_SAMPLE","line1":"10 Example Street","line2":null,"suburb":"Melbourne","state":"VIC","postcode":"3000","latitude":-37.81,"longitude":144.96}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addresses/{id}":{"get":{"operationId":"getAddress","summary":"Resolve an address","description":"Resolve a G-NAF address ID. Returns zero or one address; an unknown ID returns an empty results array.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"GNAF_SAMPLE"}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Address"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"uprn":"GNAF_SAMPLE","line1":"10 Example Street","line2":null,"suburb":"Melbourne","state":"VIC","postcode":"3000","latitude":-37.81,"longitude":144.96}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/nearest":{"get":{"operationId":"nearestAddresses","summary":"Find nearby addresses","description":"Find geocoded addresses near a point, including distance in metres.","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"description":"Latitude.","example":-37.81},{"name":"lng","in":"query","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"description":"Longitude.","example":144.96},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":5},"description":"Maximum 20; larger values are capped.","example":5}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Address"},{"type":"object","properties":{"distanceMetres":{"type":"number","minimum":0}},"required":["distanceMetres"]}]}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"uprn":"GNAF_SAMPLE","line1":"10 Example Street","line2":null,"suburb":"Melbourne","state":"VIC","postcode":"3000","latitude":-37.81,"longitude":144.96,"distanceMetres":12.4}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/postcodes/{postcode}":{"get":{"operationId":"getPostcode","summary":"Resolve a postcode","description":"One aggregate per state, with suburbs, address count and geocoded centroid.","parameters":[{"name":"postcode","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{4}$"},"example":"3000"}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Postcode"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"postcode":"3000","state":"VIC","suburbs":["Melbourne"],"addressCount":100,"latitude":-37.81,"longitude":144.96}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"postcode-not-found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/postcodes":{"get":{"operationId":"searchPostcodes","summary":"Search postcodes","description":"Search a postcode prefix of one to four digits or a suburb name.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100},"description":"Postcode prefix or suburb name.","example":"melbourne"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":8},"description":"Maximum 20; larger values are capped.","example":8}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Postcode"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"postcode":"3000","state":"VIC","suburbs":["Melbourne"],"addressCount":100,"latitude":-37.81,"longitude":144.96}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addresses/bulk":{"post":{"operationId":"bulkAddresses","summary":"Look up several addresses","description":"Run 1 to 100 queries in input order. Each query counts as one lookup. Each limit defaults to 1 and caps at 5. Request body limit: 64 KiB.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"queries":{"type":"array","items":{"type":"object","properties":{"q":{"type":"string","minLength":3,"maxLength":200},"limit":{"type":"integer","minimum":1,"default":1,"description":"Capped at 5."}},"required":["q"]},"minItems":1,"maxItems":100}},"required":["queries"]},"example":{"queries":[{"q":"example street"}]}}}},"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/BulkResult"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"q":"example street","results":[{"uprn":"GNAF_SAMPLE","line1":"10 Example Street","line2":null,"suburb":"Melbourne","state":"VIC","postcode":"3000","latitude":-37.81,"longitude":144.96}]}]}}}},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/parse":{"post":{"operationId":"parseAddress","summary":"Parse a messy address","description":"Split free-text address input into components with a deterministic Australian parser, optionally libpostal and an OVH model when the rules are unsure, then rank G-NAF candidates with a confidence and the components that matched. PO boxes are recognised and never matched. Requires the parse scope. Body limit 4 KiB.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","minLength":3,"maxLength":300},"limit":{"type":"integer","minimum":1,"maximum":20}},"required":["q"]},"example":{"q":"unit 3/42 wallaby way syd 2000","limit":3}}}},"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ParseCandidate"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"uprn":"GNAF_SAMPLE","line1":"10 Example Street","line2":null,"suburb":"Melbourne","state":"VIC","postcode":"3000","latitude":-37.81,"longitude":144.96,"confidence":0.94,"matchedOn":["number","street","suburb"]}]}}}},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/boundaries/{layer}/{code}":{"get":{"operationId":"getBoundary","summary":"Resolve a boundary","description":"A boundary by layer (mmm, remoteness, lga, sa2, sa3, sa4, federal, state, poa, sal) and code: its name and the postcodes it touches with address counts. Empty results until a boundary set is loaded.","parameters":[{"name":"layer","in":"path","required":true,"schema":{"type":"string"},"example":"federal"},{"name":"code","in":"path","required":true,"schema":{"type":"string"},"example":"107"}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Boundary"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"layer":"federal","code":"107","name":"Calare","postcodes":[{"postcode":"2795","addresses":17787}]}]}}}},"304":{"description":"The cached representation is unchanged."},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jobs":{"post":{"operationId":"submitJob","summary":"Submit a CSV job","description":"Send the CSV itself with Content-Type text/csv (10 MiB limit, up to 50,000 rows). Header x-job-column names the address column (default address; a 1-based index for headerless files) and x-job-filename names the file. Every processed row counts one lookup. Requires the jobs scope. 503 jobs-unavailable when storage is not configured.","parameters":[],"requestBody":{"required":true,"content":{"text/csv":{"schema":{"type":"string"},"example":"address\n10 Example Street Melbourne VIC 3000\n"}}},"responses":{"202":{"description":"Job accepted.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"id":"job_sample","status":"queued","rowCount":120,"matchedHigh":0,"matchedLow":0,"unmatched":0,"downloadUrl":null,"expiresAt":null}]}}}},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"listJobs","summary":"List recent jobs","description":"The last 50 jobs for the account.","parameters":[],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"id":"job_sample","status":"done","rowCount":120,"matchedHigh":100,"matchedLow":15,"unmatched":5,"downloadUrl":null,"expiresAt":null}]}}}},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jobs/{id}":{"get":{"operationId":"getJob","summary":"Check a CSV job","description":"Job state, counts by confidence band, and a presigned download link for 24 hours once done.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"job_sample"}],"responses":{"200":{"description":"Successful response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}},"required":["results"]}]},"example":{"ok":true,"release":"AUG 2026 - Geoscape G-NAF - GDA2020","results":[{"id":"job_sample","status":"done","rowCount":120,"matchedHigh":100,"matchedLow":15,"unmatched":5,"downloadUrl":"https://example.invalid/output.csv","expiresAt":"2026-09-18T00:00:00.000Z"}]}}}},"400":{"description":"Invalid query, path parameter or request body.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or unknown API key: invalid-api-key.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"key-revoked, account-suspended or insufficient-scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Job not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate-limited or quota-exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Lookup or internal error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Address data is unavailable.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/health":{"get":{"operationId":"health","summary":"Check process health","description":"Process liveness. Does not query PostgreSQL. No key required.","security":[],"responses":{"200":{"description":"Process is running.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"]},"example":{"ok":true}}}}}}},"/ready":{"get":{"operationId":"ready","summary":"Check data readiness","description":"Reports data readiness and release metadata. No key required.","security":[],"responses":{"200":{"description":"Address data is ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Readiness"},"example":{"ok":true,"ready":true,"rowCount":100,"releaseId":"sample","releaseName":"AUG 2026 - Geoscape G-NAF - GDA2020","loadedAt":"2026-09-01T00:00:00.000Z"}}}},"503":{"description":"Data is not loaded or the database is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Readiness"},"example":{"ok":false,"ready":false,"rowCount":0,"releaseId":null,"releaseName":null,"loadedAt":null,"error":"database-unavailable"}}}}}}}},"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key"},"BearerAuth":{"type":"http","scheme":"bearer"}},"headers":{"X-RateLimit-Limit":{"description":"Monthly lookup allowance for a registered key. Absent for the system key.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Remaining":{"description":"Lookups remaining after a successful response. Not guaranteed on authentication or throttle failures.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Start of the next UTC calendar month.","schema":{"type":"string","format":"date-time"}},"Retry-After":{"description":"Seconds until another request can be attempted.","schema":{"type":"integer","minimum":0}}},"schemas":{"Address":{"type":"object","properties":{"uprn":{"type":"string"},"line1":{"type":"string"},"line2":{"type":["string","null"]},"suburb":{"type":"string"},"state":{"type":"string"},"postcode":{"type":"string","pattern":"^\\d{4}$"},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"boundaries":{"$ref":"#/components/schemas/Boundaries"}},"required":["uprn","line1","line2","suburb","state","postcode","latitude","longitude"]},"Boundaries":{"type":["object","null"],"description":"Null until a boundary set is loaded. Codes and names follow the ABS ASGS Edition 3 allocation files, the Modified Monash Model 2023 by Mesh Block.","properties":{"sa1":{"type":["string","null"]},"sa2":{"$ref":"#/components/schemas/CodeName"},"sa3":{"$ref":"#/components/schemas/CodeName"},"sa4":{"$ref":"#/components/schemas/CodeName"},"gccsa":{"$ref":"#/components/schemas/CodeName"},"remoteness":{"$ref":"#/components/schemas/CodeName"},"lga":{"$ref":"#/components/schemas/CodeName"},"electorate":{"type":"object","properties":{"federal":{"$ref":"#/components/schemas/CodeName"},"state":{"$ref":"#/components/schemas/CodeName"}},"required":["federal","state"]},"postalArea":{"type":["string","null"]},"suburb":{"$ref":"#/components/schemas/CodeName"},"mmm":{"type":"object","properties":{"category":{"type":["integer","null"],"minimum":1,"maximum":7},"name":{"type":["string","null"]}},"required":["category","name"]}}},"CodeName":{"type":"object","properties":{"code":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["code","name"]},"Boundary":{"type":"object","properties":{"layer":{"type":"string"},"code":{"type":"string"},"name":{"type":["string","null"]},"postcodes":{"type":"array","items":{"type":"object","properties":{"postcode":{"type":"string","pattern":"^\\d{4}$"},"addresses":{"type":"integer"}},"required":["postcode","addresses"]}}},"required":["layer","code","postcodes"]},"Envelope":{"type":"object","properties":{"ok":{"const":true},"release":{"type":["string","null"]},"results":{"type":"array","items":{}}},"required":["ok","release","results"]},"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"string"},"message":{"type":"string"},"results":{"type":"array","maxItems":0}},"required":["ok","error","message","results"]},"Postcode":{"type":"object","properties":{"postcode":{"type":"string","pattern":"^\\d{4}$"},"state":{"type":"string"},"suburbs":{"type":"array","items":{"type":"string"}},"addressCount":{"type":"integer","minimum":0},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}},"required":["postcode","state","suburbs","addressCount","latitude","longitude"]},"BulkResult":{"type":"object","properties":{"q":{"type":"string"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Address"}}},"required":["q","results"]},"ParseCandidate":{"allOf":[{"$ref":"#/components/schemas/Address"},{"type":"object","properties":{"confidence":{"type":"number","minimum":0,"maximum":1},"matchedOn":{"type":"array","items":{"type":"string"}}},"required":["confidence","matchedOn"]}],"description":"The parse envelope also carries a top-level parsed object: unit, number, numberTo, street, streetType, suburb, state, postcode, kind (po_box when detected), method (rules, libpostal or model) and confidence."},"Job":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","done","failed"]},"rowCount":{"type":["integer","null"]},"matchedHigh":{"type":"integer"},"matchedLow":{"type":"integer"},"unmatched":{"type":"integer"},"error":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"expiresAt":{"type":["string","null"]}},"required":["id","status"]},"Readiness":{"type":"object","properties":{"ok":{"type":"boolean"},"ready":{"type":"boolean"},"rowCount":{"type":"integer","minimum":0},"releaseId":{"type":["string","null"]},"releaseName":{"type":["string","null"]},"loadedAt":{"type":["string","null"],"format":"date-time"},"error":{"type":"string"}},"required":["ok","ready","rowCount","releaseId","releaseName","loadedAt"]}}}}