Properties
| Name | Type | Description |
|---|---|---|
| id | string | Estimation UUID |
| organization_id | string | Organization UUID |
| user_id | string | User UUID |
| name | string | Friendly name for this estimation |
| task_id | string | Task identifier |
| status | string | Estimation status |
| repos | array | Input repositories |
| total_credits | number | Total estimated credits across all repos |
| repo_results | array | Per-repo estimation results |
| error | string | Error message |
| triage_required | boolean | Whether human triage is mandatory for a scan of this estimation (large app, above the predicted-cost threshold). The customer cannot opt out when true. |
| triage_fee_credits | number | Triage fee in credits (a percentage of the scan base credits) added when triage is enabled |
| created_at | string | Timestamp when estimation was created |
| updated_at | string | Timestamp when estimation was last updated |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/hacktron/json-schema/hacktron-cost-estimation-response-dto-schema.json",
"title": "CostEstimationResponseDto",
"x-generated": "2026-10-29",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/hacktron-openapi.json#/components/schemas/CostEstimationResponseDto",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Estimation UUID"
},
"organization_id": {
"type": "string",
"description": "Organization UUID"
},
"user_id": {
"type": "string",
"description": "User UUID"
},
"name": {
"type": "string",
"description": "Friendly name for this estimation"
},
"task_id": {
"type": "string",
"description": "Task identifier"
},
"status": {
"type": "string",
"description": "Estimation status",
"enum": [
"pending",
"running",
"completed",
"partial",
"failed"
]
},
"repos": {
"description": "Input repositories",
"type": "array",
"items": {
"$ref": "#/$defs/RepoInputResponseDto"
}
},
"total_credits": {
"type": "number",
"description": "Total estimated credits across all repos"
},
"repo_results": {
"description": "Per-repo estimation results",
"type": "array",
"items": {
"$ref": "#/$defs/RepoResultResponseDto"
}
},
"error": {
"type": "string",
"description": "Error message"
},
"triage_required": {
"type": "boolean",
"description": "Whether human triage is mandatory for a scan of this estimation (large app, above the predicted-cost threshold). The customer cannot opt out when true."
},
"triage_fee_credits": {
"type": "number",
"description": "Triage fee in credits (a percentage of the scan base credits) added when triage is enabled"
},
"created_at": {
"format": "date-time",
"type": "string",
"description": "Timestamp when estimation was created"
},
"updated_at": {
"format": "date-time",
"type": "string",
"description": "Timestamp when estimation was last updated"
}
},
"required": [
"id",
"organization_id",
"user_id",
"task_id",
"status",
"repos",
"triage_required",
"triage_fee_credits",
"created_at",
"updated_at"
],
"$defs": {
"RepoInputResponseDto": {
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Source type",
"enum": [
"connected",
"public",
"upload"
]
},
"repo_url": {
"type": "string",
"description": "Repository URL"
},
"branch": {
"type": "string",
"description": "Branch name"
},
"commit_sha": {
"type": "string",
"description": "Resolved commit SHA"
},
"archive_id": {
"type": "string",
"description": "Archive ID (for upload sources)"
}
}
},
"RepoResultApplicationDto": {
"type": "object",
"properties": {
"app_name": {
"type": "string",
"description": "Application name"
},
"app_root_path": {
"type": "string",
"description": "Application root path"
},
"architecture": {
"type": "string",
"description": "Architecture description"
}
},
"required": [
"app_name",
"app_root_path"
]
},
"RepoResultResponseDto": {
"type": "object",
"properties": {
"repo_url": {
"type": "string",
"description": "Repository URL"
},
"branch": {
"type": "string",
"description": "Branch name"
},
"commit_sha": {
"type": "string",
"description": "Commit SHA"
},
"status": {
"type": "string",
"description": "Result status",
"enum": [
"completed",
"failed"
]
},
"from_cache": {
"type": "boolean",
"description": "Whether result was served from cache"
},
"applications": {
"description": "Detected applications",
"type": "array",
"items": {
"$ref": "#/$defs/RepoResultApplicationDto"
}
},
"credits": {
"type": "number",
"description": "Estimated credits for this repo"
},
"error": {
"type": "string",
"description": "Error message (when status is failed)"
},
"failure_reason": {
"type": "string",
"description": "Structured failure reason",
"enum": [
"unsupported_language",
"scope_no_match"
]
},
"unsupported_languages": {
"description": "Detected unsupported languages among the top languages",
"type": "array",
"items": {
"type": "string"
}
},
"scoped_file_count": {
"type": "number",
"description": "Files that matched the repository's whitebox scope rules, counted on disk before analysis. Absent for unscoped repositories."
}
},
"required": [
"repo_url",
"status",
"from_cache"
]
}
}
}
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/hacktron-cost-estimation-response-dto"
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.