{"openapi":"3.1.0","info":{"title":"SignalWharf - Paid Company Website Signals","version":"1.0.0","description":"Deterministic public homepage metadata and business signal extraction; x402 pay-per-call USDC. Not verified company registry data."},"servers":[{"url":"https://signalwharf-api.signalwharf.workers.dev"}],"paths":{"/v1/company":{"get":{"operationId":"getCompanySignals","summary":"Analyze one public company website (paid via x402)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.05"}},"description":"First request returns HTTP 402 with PAYMENT-REQUIRED. A compatible agent signs a USDC payment and retries with PAYMENT-SIGNATURE. Only domain names accepted, not URLs or IPs. Observed vertical booking, ordering and payments vendor hostnames are public-page hints, not confirmed vendor contracts.","security":[{"x402Payment":[]}],"parameters":[{"in":"query","name":"domain","required":true,"schema":{"type":"string","example":"stripe.com"},"description":"Public registered domain name. HTTPS homepage only; redirects not followed."}],"responses":{"200":{"description":"Website signals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySignals"}}}},"400":{"description":"Invalid domain"},"402":{"description":"x402 payment required. Inspect PAYMENT-REQUIRED response header."},"403":{"description":"Robots policy disallows crawl or is inaccessible."},"422":{"description":"Unsupported content, size or redirect."},"502":{"description":"Unable to fetch public website."}}}},"/v1/sample":{"get":{"operationId":"getSample","summary":"Get illustrative free response","responses":{"200":{"description":"Illustrative sample, no payment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySignals"}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Health check","responses":{"200":{"description":"Service is online"}}}}},"components":{"securitySchemes":{"x402Payment":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 payment authorization, negotiated after an HTTP 402 response"}},"schemas":{"CompanySignals":{"type":"object","properties":{"domain":{"type":"string"},"website_url":{"type":"string"},"checked_at":{"type":"string","format":"date-time"},"company":{"type":"object"},"technologies_observed":{"type":"array","items":{"type":"string"}},"social_profiles_observed":{"type":"object"},"vertical_providers_observed":{"type":"array","items":{"type":"object"}},"website_signals":{"type":"object"},"source":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}}},"required":["domain","company","technologies_observed","website_signals"]}}}}