236 lines
6.9 KiB
JSON
236 lines
6.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "ErrorEnvelope",
|
|
"description": "Versioned failure document.",
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"description": "Typed failure body.",
|
|
"$ref": "#/$defs/ErrorBody"
|
|
},
|
|
"kind": {
|
|
"description": "Always `error`.",
|
|
"$ref": "#/$defs/ErrorKind"
|
|
},
|
|
"schema_version": {
|
|
"type": "integer",
|
|
"const": 1
|
|
}
|
|
},
|
|
"required": [
|
|
"schema_version",
|
|
"kind",
|
|
"error"
|
|
],
|
|
"$defs": {
|
|
"ErrorBody": {
|
|
"description": "Stable public error body.",
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"description": "Stable machine identifier.",
|
|
"$ref": "#/$defs/ErrorCode"
|
|
},
|
|
"details": {
|
|
"description": "Code-specific structured context, always an object.",
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"message": {
|
|
"description": "Concise context that is not a control-flow interface.",
|
|
"type": "string"
|
|
},
|
|
"retryable": {
|
|
"description": "Whether the same logical request might later succeed unchanged.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message",
|
|
"retryable",
|
|
"details"
|
|
]
|
|
},
|
|
"ErrorCode": {
|
|
"description": "Stable machine-readable error taxonomy available in the foundation.",
|
|
"oneOf": [
|
|
{
|
|
"description": "Command-line syntax or validation failed.",
|
|
"type": "string",
|
|
"const": "invalid_arguments"
|
|
},
|
|
{
|
|
"description": "The caller's Sample path does not exist.",
|
|
"type": "string",
|
|
"const": "sample_not_found"
|
|
},
|
|
{
|
|
"description": "The caller's Sample cannot be read.",
|
|
"type": "string",
|
|
"const": "sample_unreadable"
|
|
},
|
|
{
|
|
"description": "The opened Sample is not a regular file.",
|
|
"type": "string",
|
|
"const": "invalid_sample_type"
|
|
},
|
|
{
|
|
"description": "The Sample exceeded the selected byte ceiling.",
|
|
"type": "string",
|
|
"const": "sample_too_large"
|
|
},
|
|
{
|
|
"description": "Source metadata changed while snapshotting.",
|
|
"type": "string",
|
|
"const": "sample_changed"
|
|
},
|
|
{
|
|
"description": "The Analysis Store lacks the required free-space reserve.",
|
|
"type": "string",
|
|
"const": "insufficient_store_space"
|
|
},
|
|
{
|
|
"description": "Ghidra could not recognize a Target Specification.",
|
|
"type": "string",
|
|
"const": "unsupported_target"
|
|
},
|
|
{
|
|
"description": "Ghidra found multiple Target Specification candidates.",
|
|
"type": "string",
|
|
"const": "ambiguous_target"
|
|
},
|
|
{
|
|
"description": "Ghidra is not installed.",
|
|
"type": "string",
|
|
"const": "ghidra_missing"
|
|
},
|
|
{
|
|
"description": "The installed Ghidra version is incompatible.",
|
|
"type": "string",
|
|
"const": "ghidra_incompatible"
|
|
},
|
|
{
|
|
"description": "Java is not installed.",
|
|
"type": "string",
|
|
"const": "java_missing"
|
|
},
|
|
{
|
|
"description": "The installed Java version is incompatible.",
|
|
"type": "string",
|
|
"const": "java_incompatible"
|
|
},
|
|
{
|
|
"description": "Rust/Java request or response validation failed.",
|
|
"type": "string",
|
|
"const": "protocol_violation"
|
|
},
|
|
{
|
|
"description": "The child exceeded a native or watchdog timeout.",
|
|
"type": "string",
|
|
"const": "timeout"
|
|
},
|
|
{
|
|
"description": "Native auto-analysis timed out.",
|
|
"type": "string",
|
|
"const": "analysis_timeout"
|
|
},
|
|
{
|
|
"description": "Ghidra auto-analysis failed.",
|
|
"type": "string",
|
|
"const": "analysis_failed"
|
|
},
|
|
{
|
|
"description": "Native Function decompilation timed out.",
|
|
"type": "string",
|
|
"const": "decompile_timeout"
|
|
},
|
|
{
|
|
"description": "Ghidra Function decompilation failed.",
|
|
"type": "string",
|
|
"const": "decompilation_failed"
|
|
},
|
|
{
|
|
"description": "The caller interrupted the operation.",
|
|
"type": "string",
|
|
"const": "interrupted"
|
|
},
|
|
{
|
|
"description": "The adapter could not serialize a bounded response.",
|
|
"type": "string",
|
|
"const": "result_too_large"
|
|
},
|
|
{
|
|
"description": "The success descriptor cannot fit the requested inline budget.",
|
|
"type": "string",
|
|
"const": "inline_budget_too_small"
|
|
},
|
|
{
|
|
"description": "Store-wide cleanup lacks explicit confirmation.",
|
|
"type": "string",
|
|
"const": "confirmation_required"
|
|
},
|
|
{
|
|
"description": "Another process holds the selected Analysis lock.",
|
|
"type": "string",
|
|
"const": "analysis_busy"
|
|
},
|
|
{
|
|
"description": "Stored Analysis validation failed and recovery did not succeed.",
|
|
"type": "string",
|
|
"const": "corrupt_analysis"
|
|
},
|
|
{
|
|
"description": "A cleanup transaction requires a recoverable retry.",
|
|
"type": "string",
|
|
"const": "cleanup_incomplete"
|
|
},
|
|
{
|
|
"description": "The resolved Analysis Store path is invalid.",
|
|
"type": "string",
|
|
"const": "invalid_store_path"
|
|
},
|
|
{
|
|
"description": "A Function Selector resolved to no Function.",
|
|
"type": "string",
|
|
"const": "function_not_found"
|
|
},
|
|
{
|
|
"description": "A Function Selector resolved to multiple Functions.",
|
|
"type": "string",
|
|
"const": "function_selector_ambiguous"
|
|
},
|
|
{
|
|
"description": "An Address is not a Function entry.",
|
|
"type": "string",
|
|
"const": "function_entry_required"
|
|
},
|
|
{
|
|
"description": "Ghidra does not contain the requested address space.",
|
|
"type": "string",
|
|
"const": "address_space_not_found"
|
|
},
|
|
{
|
|
"description": "Installation diagnosis found an unusable component.",
|
|
"type": "string",
|
|
"const": "doctor_failed"
|
|
},
|
|
{
|
|
"description": "A general runtime or integration failure.",
|
|
"type": "string",
|
|
"const": "internal"
|
|
}
|
|
]
|
|
},
|
|
"ErrorKind": {
|
|
"description": "Error envelope discriminator.",
|
|
"oneOf": [
|
|
{
|
|
"description": "A failed invocation.",
|
|
"type": "string",
|
|
"const": "error"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|