AuditTrail
Phase 48 / AUDIT-01..05 — versioned, structured "show your work" trail. Schema-stable: breaking changes MUST bump `schema_version` AND update the pinned fixture in `backend/tests/test_audit_trail.py`. Compliance: - "model_horizon" defaults to "~1 year" (matches Phase 46 Model Horizon badge on ValuationPanel projected section). - `disclaimer` field always contains the LEGAL-OK negation pattern. LEGAL-OK: disclaimer field text NEGATES "forecast" and "price target".
Properties
| Name | Type | Description |
|---|---|---|
| schema_version | string | |
| ticker | string | |
| sector | object | |
| model_horizon | string | |
| inputs | object | |
| sector_multiples | object | |
| consensus | object | |
| anomalies | array | |
| anomaly_window_days | integer | |
| disclaimer | string | |
| generated_at | string | |
| compute_ms | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/equity-rank-com/json-schema/equity-rank-com-audit-trail-schema.json",
"title": "AuditTrail",
"description": "Phase 48 / AUDIT-01..05 — versioned, structured \"show your work\" trail.\n\nSchema-stable: breaking changes MUST bump `schema_version` AND update the\npinned fixture in `backend/tests/test_audit_trail.py`.\n\nCompliance:\n- \"model_horizon\" defaults to \"~1 year\" (matches Phase 46 Model Horizon\n badge on ValuationPanel projected section).\n- `disclaimer` field always contains the LEGAL-OK negation pattern.\n LEGAL-OK: disclaimer field text NEGATES \"forecast\" and \"price target\".",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/equity-rank-com-audit-api-openapi.yml#/components/schemas/AuditTrail",
"properties": {
"schema_version": {
"type": "string",
"title": "Schema Version",
"default": "1.0"
},
"ticker": {
"type": "string",
"title": "Ticker"
},
"sector": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sector"
},
"model_horizon": {
"type": "string",
"title": "Model Horizon",
"default": "~1 year"
},
"inputs": {
"$ref": "#/$defs/AuditInputSnapshot"
},
"sector_multiples": {
"anyOf": [
{
"$ref": "#/$defs/AuditSectorMultiples"
},
{
"type": "null"
}
]
},
"consensus": {
"$ref": "#/$defs/AuditConsensusMath"
},
"anomalies": {
"items": {
"$ref": "#/$defs/AuditAnomaly"
},
"type": "array",
"title": "Anomalies"
},
"anomaly_window_days": {
"type": "integer",
"title": "Anomaly Window Days",
"default": 7
},
"disclaimer": {
"type": "string",
"title": "Disclaimer",
"default": "These values are model scenarios under stated assumptions — not a forecast, price target, or recommendation. For informational use only."
},
"generated_at": {
"type": "string",
"title": "Generated At"
},
"compute_ms": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Compute Ms"
}
},
"type": "object",
"required": [
"ticker"
],
"$defs": {
"AuditAnomaly": {
"properties": {
"field_path": {
"type": "string",
"title": "Field Path"
},
"rule": {
"type": "string",
"title": "Rule"
},
"raw_value": {
"title": "Raw Value"
},
"fetch_function": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fetch Function"
},
"severity": {
"type": "string",
"title": "Severity",
"default": "error"
},
"root_cause": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Root Cause"
},
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Created At"
}
},
"type": "object",
"required": [
"field_path",
"rule"
],
"title": "AuditAnomaly",
"description": "One row from `av_anomaly_log` within the audit window. Lets the user\nsee if data quality issues affected this ticker's valuation."
},
"AuditConsensusMath": {
"properties": {
"consensus_fair_value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Consensus Fair Value"
},
"consensus_margin_of_safety": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Consensus Margin Of Safety"
},
"methods_used": {
"type": "integer",
"title": "Methods Used",
"default": 0
},
"method_contributions": {
"items": {
"$ref": "#/$defs/AuditMethodValue"
},
"type": "array",
"title": "Method Contributions"
},
"interval_low": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Interval Low"
},
"interval_high": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Interval High"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence"
},
"model_confidence_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Model Confidence Score"
}
},
"type": "object",
"title": "AuditConsensusMath",
"description": "The consensus blend's intermediate values: methods included + their\nweights, the weighted average math, and the resulting consensus FV.\nIncludes the 80% CI on the consensus when Phase 47 data is present."
},
"AuditInputSnapshot": {
"properties": {
"price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Price"
},
"eps_ttm": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Eps Ttm"
},
"bvps": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Bvps"
},
"ps_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ps Ratio"
},
"ev_ebitda_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ev Ebitda Ratio"
},
"beta": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Beta"
},
"revenue_growth_yoy": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Revenue Growth Yoy"
},
"eps_growth_yoy": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Eps Growth Yoy"
},
"dividend_yield": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Dividend Yield"
},
"forward_pe_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Forward Pe Ratio"
},
"realized_vol_60d": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Realized Vol 60D"
},
"market_cap": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Market Cap"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Updated At"
}
},
"type": "object",
"title": "AuditInputSnapshot",
"description": "Snapshot of inputs that drove the valuation, with timestamps.\n\nThese are the SAME values that compute_* functions consumed. No re-fetch\n— they come from screener_cache's already-persisted columns."
},
"AuditMethodValue": {
"properties": {
"method": {
"type": "string",
"title": "Method"
},
"fair_value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Fair Value"
},
"weight": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Weight"
},
"interval_low": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Interval Low"
},
"interval_high": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Interval High"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence"
}
},
"type": "object",
"required": [
"method"
],
"title": "AuditMethodValue",
"description": "One method's contribution to the consensus.\n\n`weight` is the SECTOR_METHOD_WEIGHTS entry; `fair_value` is the\ncompute_*_fair_value output; `interval_low/high` are the 80% CI bounds\nfrom Phase 47 (Optional — rows pre-Phase-47 won't have them)."
},
"AuditSectorMultiples": {
"properties": {
"sector": {
"type": "string",
"title": "Sector"
},
"pe_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Pe Multiple"
},
"pb_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Pb Multiple"
},
"ps_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ps Multiple"
},
"ev_ebitda_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ev Ebitda Multiple"
},
"ev_sales_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ev Sales Multiple"
},
"roe_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Roe Pct"
},
"pfcf_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Pfcf Multiple"
},
"evfcf_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Evfcf Multiple"
},
"ev_ebit_multiple": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ev Ebit Multiple"
}
},
"type": "object",
"required": [
"sector"
],
"title": "AuditSectorMultiples",
"description": "Sector multiples applied during this calc — the DEFAULT_SECTOR_MULTIPLES\ndict entry for this ticker's sector, surfaced for transparency."
}
}
}
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
curl "https://apis.io/api/v1/json-schemas/equity-rank-com-audit-trail"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.