{"openapi":"3.1.0","info":{"title":"Australian company register lookup","description":"Paid HTTP lookups over the ASIC Company Dataset: resolve an ABN, an ACN or a company name to its Australian company register record.\n\nThere is no account and no API key. Every lookup is paid per call in USDC on Base under the x402 protocol, and the payment header is the credential, so the first request a client ever makes can be a successful paid one.\n\nThe data is a weekly snapshot of a public dataset, not the official register. It carries no personal information, and it does not carry GST status, business address, state or postcode, which live in the Australian Business Register extract instead.","version":"1.0.0","contact":{"name":"Nightshift Builds","url":"https://nightshiftbuilds.com"},"license":{"name":"Data licensed CC BY 3.0 AU","url":"https://creativecommons.org/licenses/by/3.0/au/"},"termsOfService":"https://api.nightshiftbuilds.com/terms"},"paths":{"/":{"get":{"tags":["discovery"],"summary":"Landing page, or service descriptor","description":"Return the landing page to a browser, the JSON descriptor to a machine.\n\nWhich one you get depends on the `Accept` header: HTML if it names\n`text/html`, otherwise the JSON below. The response carries `Vary: Accept`\nso a shared cache never serves one audience the other's answer.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["discovery"],"summary":"Health","description":"Liveness and readiness. Free, and deliberately says nothing sensitive.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terms":{"get":{"tags":["discovery"],"summary":"Terms","operationId":"terms_terms_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/favicon.svg":{"get":{"tags":["discovery"],"summary":"Site icon","description":"Declared in the page head too, so a browser never guesses /favicon.ico.\n\nAn undeclared icon costs a 404 on every page load, which is a console error\non a page whose whole job is to be fetched cleanly by crawlers.","operationId":"favicon_favicon_svg_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"tags":["discovery"],"summary":"Crawl policy","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"tags":["discovery"],"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"tags":["discovery"],"summary":"Orientation for language-model agents","description":"Per the llmstxt.org structure: a title, a summary, then linked sections.","operationId":"llms_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"tags":["discovery"],"summary":"The full guide, payment flow included","operationId":"llms_full_llms_full_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/docs":{"get":{"tags":["discovery"],"summary":"Rendered API reference","operationId":"docs_docs_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/.well-known/x402":{"get":{"tags":["discovery"],"summary":"x402 resource-server descriptor","description":"Follows draft-hawkins-x402-dns-discovery, an individual IETF draft.\n\nNot a ratified standard and nothing depends on it. Discovery that works\ntoday is facilitator-side indexing, which this resource is already in.","operationId":"well_known_x402__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/api-catalog":{"get":{"tags":["discovery"],"summary":"RFC 9727 linkset of API descriptions","operationId":"api_catalog__well_known_api_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/security.txt":{"get":{"tags":["discovery"],"summary":"RFC 9116 disclosure contact","operationId":"security_txt__well_known_security_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/company":{"get":{"tags":["lookup"],"summary":"Look up an Australian company by ABN, ACN or name","description":"Resolve exactly one of `abn`, `acn` or `name` to its ASIC company register record.\n\n**Payment.** Every call is paid. An unpaid request answers `402` with an x402 challenge in both live protocol versions: a v1 document in the body, and a base64 v2 document in the `PAYMENT-REQUIRED` header. Sign the USDC authorisation, retry with the payment header, and the answer comes back with the settlement transaction hash in `PAYMENT-RESPONSE`.\n\n**You are not charged** for a malformed query (`400`, checked before payment) or for a query that matches nothing (`404`, authorisation released).\n\n**Idempotency.** The payment authorisation nonce is the idempotency key. Resending an identical request with an identical authorisation returns the stored answer rather than charging again, so a lost response can be recovered. Retrieval is bound to both the query and the payer's signature.","operationId":"lookup_v1_company_get","parameters":[{"name":"abn","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Australian Business Number, 11 digits","title":"Abn"},"description":"Australian Business Number, 11 digits"},{"name":"acn","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Australian Company Number, 9 digits","title":"Acn"},"description":"Australian Company Number, 9 digits"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company name, prefix match","title":"Name"},"description":"Company name, prefix match"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"A match. Charged once; the settlement transaction hash is in the `PAYMENT-RESPONSE` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupResponse"}}}},"400":{"description":"Zero or more than one of abn, acn, name, or a malformed value. Validated before payment, so this never costs anything."},"402":{"description":"Payment required, or the payment presented was invalid or expired. The body is an x402 v1 challenge; the `PAYMENT-REQUIRED` header carries a base64 x402 v2 challenge including the `bazaar` discovery extension.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"404":{"description":"The query was valid and matched nothing. `charged` is false and the payment authorisation is released for reuse."},"409":{"description":"This payment authorisation is already in flight, was already spent on a different query, or its outcome is unknown. Do not resend it."},"429":{"description":"Rate limited. Honour `Retry-After`."},"503":{"description":"The payment could not be completed against the facilitator. Read `charged` before deciding what to do: `false` means verification failed and no transfer was attempted, so it is safe to retry. `\"unknown\"` means settlement was submitted and the outcome was never learnt, so a transfer MAY have happened - do not sign a fresh authorisation. Resend the identical request with the identical authorisation instead, which returns the stored answer if it did settle."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"PaymentRequirements":{"type":"object","description":"One acceptable way to pay for this resource.","properties":{"scheme":{"type":"string","example":"exact"},"network":{"type":"string","description":"`base` on an x402 v1 document, `eip155:8453` on a v2 one. Both are Base mainnet.","example":"base"},"asset":{"type":"string","description":"USDC on Base.","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"payTo":{"type":"string","example":"0xAe6606fDc5e8b63BA62863E130dEead2fAdaE31f"},"resource":{"type":"string","example":"https://api.nightshiftbuilds.com/v1/company"},"description":{"type":"string"},"mimeType":{"type":"string","example":"application/json"},"maxTimeoutSeconds":{"type":"integer","example":300},"maxAmountRequired":{"type":"string","description":"Price in atomic units of the asset. USDC has 6 decimals, so 10000 is USD 0.01.","example":"10000"},"amount":{"type":"string","description":"The x402 v2 name for the same value."},"extra":{"type":"object"}},"required":["scheme","network","asset","payTo","resource"]},"PaymentRequired":{"type":"object","description":"The body of a 402. This is a genuine x402 **v1** challenge, for clients that know nothing of v2. A v2 challenge is served in parallel as base64 in the `PAYMENT-REQUIRED` response header, carrying `x402Version: 2`, a top-level `resource` object, `accepts[].network` of `eip155:8453`, and an `extensions.bazaar` block declaring this endpoint's input and output schema.","properties":{"x402Version":{"type":"integer","example":1},"error":{"type":"string","example":"payment required"},"accepts":{"type":"array","items":{"$ref":"#/components/schemas/PaymentRequirements"}},"request_id":{"type":"string"}},"required":["x402Version","error","accepts"]},"Company":{"type":"object","description":"One company register record.","example":{"company_name":"WOOLWORTHS GROUP LIMITED","acn":"000014675","arbn":null,"abn":"88000014675","status":"Registered","status_code":"REGD","entity_type":"Australian public company","entity_type_code":"APUB","class":"Limited by shares","sub_class":"Listed public company","date_of_registration":"1924-09-22","date_of_deregistration":null,"previous_state_of_registration":"NSW","state_registration_number":"00921434","current_name_start_date":null,"former_names":["WOOLWORTHS LTD"]},"properties":{"company_name":{"type":"string","example":"WOOLWORTHS GROUP LIMITED"},"acn":{"type":["string","null"],"description":"Australian Company Number. Null for a body allotted an ARBN instead.","example":"000014675"},"arbn":{"type":["string","null"],"description":"Australian Registered Body Number, for registered Australian corporations and foreign companies. Null for an Australian company."},"abn":{"type":["string","null"],"example":"88000014675"},"status":{"type":"string","example":"Registered"},"status_code":{"type":"string","example":"REGD"},"entity_type":{"type":"string","example":"Australian public company"},"entity_type_code":{"type":"string","example":"APUB"},"class":{"type":["string","null"]},"sub_class":{"type":["string","null"]},"date_of_registration":{"type":["string","null"],"format":"date"},"date_of_deregistration":{"type":["string","null"],"format":"date"},"previous_state_of_registration":{"type":["string","null"]},"state_registration_number":{"type":["string","null"]},"current_name_start_date":{"type":["string","null"],"format":"date"},"former_names":{"type":"array","items":{"type":"string"}}}},"LookupResponse":{"type":"object","properties":{"query":{"type":"object"},"count":{"type":"integer"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Company"}},"charged":{"type":"boolean"},"request_id":{"type":"string"},"provenance":{"type":"object"},"payment":{"type":"object","properties":{"price_usd":{"type":"number"},"settlement_tx":{"type":["string","null"]},"network":{"type":["string","null"]}}}}}}},"tags":[{"name":"lookup","description":"The one paid endpoint."},{"name":"discovery","description":"Free, unauthenticated surfaces describing this service to people and to agents."}],"servers":[{"url":"https://api.nightshiftbuilds.com","description":"Production"}],"externalDocs":{"description":"Landing page, worked examples and the honest limits","url":"https://api.nightshiftbuilds.com/"}}