{"openapi":"3.0.3","info":{"title":"OnlyData Club API","description":"First-party professional identity API. Query person and company profiles, create profiles, and access structured professional data. All data is user-provided and first-party — never scraped or inferred.","version":"1.0.0","contact":{"email":"cam@producthacker.ai","url":"https://onlydata.club"}},"servers":[{"url":"https://onlydata.club","description":"Production"}],"paths":{"/api/profiles":{"get":{"operationId":"listProfiles","summary":"List all public profiles","description":"Returns all public person and company profiles with slug, name, type, headline, and location.","parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["person","company"]},"description":"Filter by profile type"}],"responses":{"200":{"description":"Array of profile summaries","content":{"application/json":{"schema":{"type":"object","properties":{"profiles":{"type":"array","items":{"$ref":"#/components/schemas/ProfileSummary"}}}}}}}}}},"/api/profile/{slug}":{"get":{"operationId":"getProfile","summary":"Get a profile by slug","description":"Returns the full profile JSON for a person or company, including about, roles, skills, projects, and all structured data.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Profile slug (e.g. camfortin, producthacker)"}],"responses":{"200":{"description":"Full profile object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"404":{"description":"Profile not found"}}}},"/api/claim":{"post":{"operationId":"claimProfile","summary":"Create a new profile","description":"Create a new person or company profile on OnlyData Club.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRequest"}}}},"responses":{"200":{"description":"Profile created successfully"},"409":{"description":"Username already taken"}}}},"/api/verify-domain/instructions/{slug}":{"get":{"operationId":"getDomainVerificationInstructions","summary":"Get domain verification instructions","description":"Returns three verification methods (DNS TXT, well-known file, HTML meta tag) with exact steps for proving domain ownership.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Company profile slug"}],"responses":{"200":{"description":"Verification instructions with all three methods"},"400":{"description":"Not a company profile or no website set"},"404":{"description":"Profile not found"}}}},"/api/verify-domain/{slug}":{"post":{"operationId":"verifyDomain","summary":"Verify company domain ownership","description":"Attempts domain verification using the specified method (dns, file, or meta). On success, sets verified status and auto-elevates team members with matching email domains.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Company profile slug"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["dns","file","meta"]}},"required":["method"]}}}},"responses":{"200":{"description":"Domain verified successfully"},"422":{"description":"Verification failed — token not found"}}}},"/api/agent-readiness":{"get":{"operationId":"getAgentReadinessAll","summary":"Get agent readiness scores for all profiles","description":"Returns agent readiness scores (0-100) across six categories: crawlability, machine readability, API readiness, agentic commerce, content access, and agent signals. Includes AI-generated summaries.","responses":{"200":{"description":"Array of scores ranked by overall readiness"}}}},"/api/agent-readiness/{slug}":{"get":{"operationId":"getAgentReadiness","summary":"Get agent readiness for a specific profile","description":"Returns detailed agent readiness scan results including per-check breakdowns and AI summary.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Profile slug"}],"responses":{"200":{"description":"Detailed readiness scan result"},"404":{"description":"No scan results for this profile"}}}}},"components":{"schemas":{"ProfileSummary":{"type":"object","properties":{"slug":{"type":"string"},"type":{"type":"string","enum":["person","company"]},"name":{"type":"string"},"headline":{"type":"string"},"location":{"type":"string"},"is_claimed":{"type":"boolean"}}},"Profile":{"type":"object","properties":{"slug":{"type":"string"},"type":{"type":"string","enum":["person","company"]},"name":{"type":"string"},"headline":{"type":"string"},"about":{"type":"string"},"location":{"type":"string"},"linkedin_url":{"type":"string"},"website":{"type":"string"},"skills":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"object"}]},"roles":{"type":"array","items":{"type":"object"}},"projects":{"type":"array","items":{"type":"object"}},"products":{"type":"array","items":{"type":"object"}},"services":{"type":"array","items":{"type":"object"}},"team":{"type":"array","items":{"type":"object"}},"education":{},"interests":{"type":"string"},"is_claimed":{"type":"boolean"},"is_public":{"type":"boolean"}}},"ClaimRequest":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"type":{"type":"string","enum":["person","company"]},"name":{"type":"string"},"headline":{"type":"string"},"about":{"type":"string"},"location":{"type":"string"},"linkedin_url":{"type":"string"},"website":{"type":"string"},"profile_data":{"type":"object"}}}}}}