Properties
| Name | Type | Description |
|---|---|---|
| success | boolean | |
| data | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/githunt-ai/json-schema/githunt-ai-user-response-schema.json",
"title": "UserResponse",
"x-generated": "2026-10-30",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/githunt-ai-openapi.yaml#/components/schemas/UserResponse",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"const": true
},
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"score": {
"type": "number"
},
"profile_score": {
"type": "number"
},
"tech_stack_score": {
"type": "number"
},
"activity_score": {
"type": "number"
},
"github_experience": {
"type": "number"
},
"matching_keywords": {
"type": "string",
"description": "Comma-separated list of matched keywords"
},
"bio": {
"type": [
"string",
"null"
]
},
"profile_url": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"followers": {
"type": "integer"
},
"blog": {
"type": [
"string",
"null"
]
},
"twitter_username": {
"type": [
"string",
"null"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"hireable": {
"type": "string",
"enum": [
"Yes",
"No"
]
},
"avatar_url": {
"type": "string"
},
"last_active_date": {
"type": [
"string",
"null"
],
"description": "Date of the candidate's most recent GitHub activity. Usually a date (YYYY-MM-DD); may be a full ISO date-time when derived from fallback sources."
},
"commits_per_month": {
"type": [
"number",
"null"
],
"description": "Average commits per month over recent history"
},
"commit_frequency_label": {
"type": [
"string",
"null"
],
"description": "Human label for commit activity (e.g. Very Active, Active, Unknown)"
},
"semantic_commit_percentage": {
"type": [
"number",
"null"
],
"description": "Percentage of analyzed commits with semantic/descriptive messages"
},
"commit_message_quality_label": {
"type": [
"string",
"null"
],
"description": "Human label for commit message quality (e.g. Excellent, Good, Insufficient Data)"
},
"top_repositories": {
"$ref": "#/$defs/TopRepositories"
},
"top_oss_contributions": {
"$ref": "#/$defs/TopOssContributions"
},
"evidence": {
"$ref": "#/$defs/Evidence"
},
"inferred_utc_offset": {
"$ref": "#/$defs/InferredUtcOffset"
},
"skill_timeline": {
"type": "object",
"description": "Per-language commit history, keyed by GitHub Linguist language name (e.g. \"Scala\", \"TypeScript\"). Always present; independent of the `skills` query parameter.",
"additionalProperties": {
"$ref": "#/$defs/SkillTimelineEntry"
}
},
"skill_checks": {
"type": "array",
"description": "Present only when the `skills` query parameter was given.",
"items": {
"$ref": "#/$defs/SkillCheck"
}
},
"commercial_context": {
"$ref": "#/$defs/CommercialContext"
}
}
}
},
"$defs": {
"CommercialAssessment": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"supported",
"unknown"
]
},
"supported_months": {
"type": "integer",
"description": "Months covered by merged dated work-history intervals. Contribution years never count towards it, so it is 0 while the profile carries no work-history evidence."
},
"required_months": {
"type": "integer",
"description": "Months the criterion requires (36 for commercial skill duration, 60 for engineering experience, 0 for the recency question, which is an overlap test rather than a duration one)."
},
"intervals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
}
}
},
"evidence_ids": {
"type": "array",
"description": "Ids of the dated work-history records the assessment counted. Empty when the status is `unknown`; the corroborating contribution and self-report records are still listed under `records`.",
"items": {
"type": "string"
}
},
"reason": {
"type": "string"
},
"window": {
"type": "object",
"description": "Present on the recency assessment.",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
}
},
"hints": {
"type": "object",
"description": "Discovery hints on the engineering-experience assessment only. Account age and first public activity never satisfy an experience requirement.",
"properties": {
"account_created_at": {
"type": [
"string",
"null"
]
},
"first_public_activity_year": {
"type": [
"integer",
"null"
]
},
"discovery_hint": {
"type": "boolean"
}
}
}
}
},
"CommercialContext": {
"type": [
"object",
"null"
],
"description": "Typed, dated evidence about commercial work, plus explicitly reasoned assessments. Null when derivation failed. Nothing here is ever `contradicted`: absent public evidence cannot disprove private or commercial work, so the only statuses are `supported` and `unknown`. `supported` requires dated work-history evidence explicitly connecting the person, the paid work, and the dates it covers. Public GitHub data carries no such evidence, so the tenure and recency assessments are `unknown` on every profile served here. Contribution years and self-reported employers are context, never duration.",
"properties": {
"schema_version": {
"type": "integer"
},
"evaluated_at": {
"type": "string",
"format": "date-time"
},
"window_years": {
"type": "integer",
"description": "Rolling recency window used by the recency assessment."
},
"records": {
"type": "array",
"items": {
"$ref": "#/$defs/CommercialContextRecord"
}
},
"records_truncated": {
"type": "boolean",
"description": "True when more records existed than the server-controlled cap. Records are ordered strongest-evidence-first, so a truncated list still contains the ones the assessments cite."
},
"assessments": {
"type": "object",
"properties": {
"commercial_scala_duration": {
"$ref": "#/$defs/CommercialAssessment"
},
"recent_commercial_scala": {
"$ref": "#/$defs/CommercialAssessment"
},
"engineering_experience": {
"$ref": "#/$defs/CommercialAssessment"
}
}
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"CommercialContextRecord": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"public_org_contribution",
"self_reported_employment",
"commit_email_domain"
],
"description": "`public_org_contribution` - the candidate authored commits in a repository owned by a company organization; contribution dates are contribution dates, never tenure. `self_reported_employment` - the profile company field or bio says so; always undated and unverified. `commit_email_domain` - commits were authored from a non-consumer mail domain; a hint only, and the address itself is never exposed."
},
"source_url": {
"type": [
"string",
"null"
]
},
"repository": {
"type": [
"string",
"null"
]
},
"commit_sha": {
"type": [
"string",
"null"
]
},
"observed_at": {
"type": [
"string",
"null"
]
},
"activity_at": {
"type": [
"string",
"null"
]
},
"interval": {
"type": [
"object",
"null"
],
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"precision": {
"type": "string",
"enum": [
"year",
"day"
]
}
}
},
"claim": {
"type": "string"
},
"attribution": {
"type": "string"
},
"limitations": {
"type": "array",
"items": {
"type": "string"
}
},
"company": {
"type": [
"string",
"null"
]
},
"organization": {
"type": [
"string",
"null"
]
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"commits": {
"type": "integer"
},
"active_years": {
"type": "array",
"items": {
"type": "integer"
}
}
}
},
"Evidence": {
"type": "array",
"description": "Where each matched skill/keyword was found on the candidate.",
"items": {
"type": "object",
"properties": {
"keyword": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"repo_name",
"repo_description",
"repo_language",
"bio",
"company",
"skill_fallback"
]
},
"repo": {
"type": "string",
"description": "Bare repository name (no owner), present when the match came from a repository. Use `top_repositories` or the evidence report for owner-qualified names."
},
"snippet": {
"type": "string",
"description": "Short surrounding text for bio/company matches"
}
}
}
},
"InferredUtcOffset": {
"type": [
"object",
"null"
],
"description": "UTC offset inferred from the candidate's own commit author timestamps, used when GitHub's `location` field is empty or unresolvable. Null when no signal is available.",
"properties": {
"offset": {
"type": "number"
},
"confidence": {
"type": "string",
"enum": [
"none",
"low",
"medium",
"high"
]
},
"sample_size": {
"type": "integer",
"description": "Number of commits the inference was based on"
},
"share": {
"type": "number",
"description": "Fraction of sampled commits at the dominant offset"
},
"latest_commit": {
"type": "string",
"format": "date-time"
}
}
},
"SkillCheck": {
"type": "object",
"description": "Verification of one requested `skills` entry against `skill_timeline`.",
"properties": {
"skill": {
"type": "string",
"description": "Echoes the requested skill name (alias-resolved for matching, e.g. \"ts\" -> TypeScript)"
},
"matched": {
"type": "boolean"
},
"first_year": {
"type": [
"integer",
"null"
]
},
"last_year": {
"type": [
"integer",
"null"
]
},
"last_activity_at": {
"type": [
"string",
"null"
],
"description": "Date of the most recent dated activity in this skill, or null when the cached timeline predates dated activity (missing evidence, not evidence of inactivity)."
},
"years_active": {
"type": "array",
"items": {
"type": "integer"
}
},
"recent_commits": {
"type": "integer"
},
"total_commits": {
"type": "integer"
},
"top_repos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name_with_owner": {
"type": "string"
},
"owner_type": {
"type": "string"
},
"commits": {
"type": "integer"
}
}
}
}
}
},
"SkillTimelineEntry": {
"type": "object",
"properties": {
"first_year": {
"type": [
"integer",
"null"
]
},
"last_year": {
"type": [
"integer",
"null"
]
},
"last_activity_at": {
"type": [
"string",
"null"
],
"description": "Date of the most recent dated activity in this language. Null on timelines cached before dated activity was recorded; a missing date is missing evidence, not evidence of inactivity."
},
"years_active": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Calendar years with at least a handful of commits in this language"
},
"total_commits": {
"type": "integer"
},
"recent_commits": {
"type": "integer",
"description": "Commits within the recent window (last few calendar years)"
},
"commits_by_year": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"top_repos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name_with_owner": {
"type": "string"
},
"owner_type": {
"type": "string"
},
"commits": {
"type": "integer"
}
}
}
}
}
},
"TopOssContributions": {
"type": "array",
"maxItems": 3,
"description": "Notable open-source projects the candidate contributed to",
"items": {
"type": "object",
"properties": {
"repository": {
"type": "string",
"description": "Full repository name (owner/name)"
},
"tier_label": {
"type": "string",
"description": "Project prominence tier (e.g. Elite, Popular, Notable)"
},
"commits": {
"type": "integer"
},
"language": {
"type": [
"string",
"null"
]
}
}
}
},
"TopRepositories": {
"type": "array",
"maxItems": 3,
"description": "The candidate's top repositories, as shown on the website candidate card",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"stars": {
"type": "integer"
},
"language": {
"type": [
"string",
"null"
]
}
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/githunt-ai-user-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.