{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://www.monocrawl.com/schemas/hackernews/user.json","title":"hackernews/user data fields","description":"Required core structure for successful data, with optional source fields. Additional fields are allowed. This is not a completeness guarantee.","type":"object","properties":{"author":{"type":["object","null"],"properties":{"id":{"type":["string","null"],"description":"id"},"username":{"type":["string","null"],"description":"username"},"display_name":{"type":["string","null"],"description":"display name"},"avatar_url":{"type":["string","null"],"description":"avatar url"},"bio":{"type":["string","null"],"description":"bio"},"url":{"type":["string","null"],"description":"url"},"joined_at":{"type":["string","null"],"description":"joined at"},"followers":{"type":["number","null"],"description":"followers; null is unknown."},"following":{"type":["number","null"],"description":"following; null is unknown."},"posts_count":{"type":["number","null"],"description":"posts count; null is unknown."},"verified":{"type":["boolean","null"],"description":"Source verification flag."},"private":{"type":["boolean","null"],"description":"Source privacy flag."}},"additionalProperties":true},"computed":{"type":["object","null"],"properties":{"engagement_rate":{"type":["number","null"],"description":"Computed only where supported."},"language":{"type":["string","null"],"description":"language"},"content_category":{"type":["string","null"],"description":"content category"},"estimated_reach":{"type":["number","null"],"description":"Unknown when null."}},"additionalProperties":true},"_warnings":{"type":"array","items":{"type":["string","null"],"description":"Source text."}}},"additionalProperties":true,"allOf":[{"anyOf":[{"required":["author"],"properties":{"author":{"type":["object"],"properties":{"id":{"type":["string","null"],"description":"id"},"username":{"type":["string","null"],"description":"username"},"display_name":{"type":["string","null"],"description":"display name"},"avatar_url":{"type":["string","null"],"description":"avatar url"},"bio":{"type":["string","null"],"description":"bio"},"url":{"type":["string","null"],"description":"url"},"joined_at":{"type":["string","null"],"description":"joined at"},"followers":{"type":["number","null"],"description":"followers; null is unknown."},"following":{"type":["number","null"],"description":"following; null is unknown."},"posts_count":{"type":["number","null"],"description":"posts count; null is unknown."},"verified":{"type":["boolean","null"],"description":"Source verification flag."},"private":{"type":["boolean","null"],"description":"Source privacy flag."}},"additionalProperties":true}}},{"required":["computed"],"properties":{"computed":{"type":["object"],"properties":{"engagement_rate":{"type":["number","null"],"description":"Computed only where supported."},"language":{"type":["string","null"],"description":"language"},"content_category":{"type":["string","null"],"description":"content category"},"estimated_reach":{"type":["number","null"],"description":"Unknown when null."}},"additionalProperties":true}}}]}],"x-contract-version":"2026-09-22","x-validation-scope":"Required success payload structure; optional fields and source completeness remain separate.","examples":[{"author":{"id":"123","username":"example"},"computed":{"engagement_rate":null}}]}