# This file was generated by API Evangelist for the qut profile on 2026-09-01. It was NOT published # by Queensland University of Technology. The `method:` key states how the content was obtained and # `source:` names the live URLs it was read from. specification: API Evangelist Errors specificationVersion: '0.1' provider: Queensland University of Technology providerId: qut generated: '2026-09-01' method: probed source: Live probes of QUT's three institution-operated machine surfaces on 2026-09-01. description: >- Error semantics across QUT's public surfaces, from what was actually observed. There is no institution-wide error convention: each surface inherits the convention of the software it runs. QUT publishes no error reference of its own. surfaces: - name: QUT ePrints OAI-PMH 2.0 contract: openapi/qut-eprints-oai-pmh-openapi.yml x-operator: institution convention: OAI-PMH 2.0 protocol errors transport_status_on_error: 200 note: >- A protocol failure is returned as HTTP 200 carrying an element inside the OAI-PMH envelope. An agent that reads only the status code will treat every malformed request as a success. This is the OAI-PMH specification's behaviour, not a QUT defect, but it is the single most important thing an integrator needs to know about this endpoint. codes: - code: badArgument meaning: Illegal, missing or repeated argument. - code: badResumptionToken meaning: resumptionToken is invalid or expired. - code: badVerb meaning: Verb missing, illegal, or repeated. - code: cannotDisseminateFormat meaning: metadataPrefix not supported by the item or repository. - code: idDoesNotExist meaning: The identifier is unknown or illegal in this repository. - code: noRecordsMatch meaning: The from/until/set combination selected an empty list. - code: noMetadataFormats meaning: No metadata formats available for the specified item. - code: noSetHierarchy meaning: The repository does not support sets. - name: QUT ESOE OpenID Connect Provider contract: openapi/qut-esoe-openid-connect-openapi.yml x-operator: institution convention: RFC 6749 / RFC 6750 OAuth 2.0 error objects transport_status_on_error: [400, 401, 403] note: >- Structured JSON error objects with `error` and `error_description`, per OAuth 2.0. Status codes are used correctly — 400 for a bad request or grant, 401 for invalid_client. codes: - code: invalid_request http: 400 - code: invalid_client http: 401 - code: invalid_grant http: 400 - code: unauthorized_client http: 400 - code: unsupported_grant_type http: 400 - code: invalid_scope http: 400 - code: access_denied http: 302 - code: server_error http: 500 - name: QUT ePrints REST contract: openapi/qut-eprints-rest-openapi.yml x-operator: institution convention: none — Apache HTML error pages transport_status_on_error: 401 observed: - url: https://eprints.qut.edu.au/rest/eprint/4.xml status: 401 body: Apache HTML 401 page, "You don't have permission to access this resource." - url: https://eprints.qut.edu.au/rest/eprint/249243/ status: 401 body: Apache HTML 401 page. - url: https://eprints.qut.edu.au/id/eprint/249243.json status: 401 body: Apache HTML 401 page. note: >- No machine-readable error body. An agent gets a correct status code and an HTML page. There is no problem+json, no error code vocabulary, and no pointer to how to obtain access. - name: Principal web estate (www.qut.edu.au) x-operator: institution convention: Cloudflare managed challenge transport_status_on_error: 403 observed: - url: https://www.qut.edu.au/ status: 403 headers: 'cf-mitigated: challenge; server: cloudflare' - url: https://www.qut.edu.au/robots.txt status: 403 - url: https://www.qut.edu.au/llms.txt status: 403 note: >- This is LIVE, not dead. Every non-browser client, including a well-behaved agent asking for robots.txt, receives an interstitial challenge page under a 403. QUT's own crawl directives are therefore unreadable by the crawlers they are addressed to.