{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/repowise-dev/json-schema/repowise-dev-savings-response-schema.json",
  "title": "SavingsResponse",
  "description": "What agents avoided in one repository over one window.\n\nEvery figure comes from the canonical savings ledger through the one core\nreport service, so this response, the repository overview headline and\n``repowise saved`` cannot disagree -- which the three of them did, in four\nseparate ways, when each aggregated and priced the ledger for itself.\n\nThree things it deliberately keeps apart. *Measured* reductions are known\nbefore/after sizes from an operation that really ran; *inferred* avoidance\nis a documented counterfactual. *Priced* and *unpriced* tokens are split\nbecause an event records the rate it was worth at the time and some events\ncarry none, and reporting a total as though it were all priced would be a\nguess. *Observed opportunities* are things that could have been saved and\nwere not: they never enter the headline.\n\n``available`` is False when the repository has no savings sidecar at all,\nwhich means \"nothing has been measured here\" and is different from a\nmeasured zero.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/repowise-dev-openapi.json#/components/schemas/SavingsResponse",
  "properties": {
    "available": {
      "type": "boolean",
      "title": "Available"
    },
    "window_days": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Window Days"
    },
    "as_of": {
      "type": "string",
      "title": "As Of",
      "default": ""
    },
    "first_event_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "First Event At"
    },
    "last_event_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Event At"
    },
    "unique_events": {
      "type": "integer",
      "title": "Unique Events",
      "default": 0
    },
    "successful_or_usable_partial_events": {
      "type": "integer",
      "title": "Successful Or Usable Partial Events",
      "default": 0
    },
    "saving_interactions": {
      "type": "integer",
      "title": "Saving Interactions",
      "default": 0
    },
    "mcp_queries_answered": {
      "type": "integer",
      "title": "Mcp Queries Answered",
      "default": 0
    },
    "dead_ends": {
      "type": "integer",
      "title": "Dead Ends",
      "default": 0
    },
    "saved_input_tokens": {
      "type": "integer",
      "title": "Saved Input Tokens",
      "default": 0
    },
    "measured_saved_input_tokens": {
      "type": "integer",
      "title": "Measured Saved Input Tokens",
      "default": 0
    },
    "inferred_saved_input_tokens": {
      "type": "integer",
      "title": "Inferred Saved Input Tokens",
      "default": 0
    },
    "priced_saved_input_tokens": {
      "type": "integer",
      "title": "Priced Saved Input Tokens",
      "default": 0
    },
    "unpriced_saved_input_tokens": {
      "type": "integer",
      "title": "Unpriced Saved Input Tokens",
      "default": 0
    },
    "priced_input_savings_usd": {
      "type": "number",
      "title": "Priced Input Savings Usd",
      "default": 0.0
    },
    "saved_output_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Saved Output Tokens"
    },
    "priced_saved_output_tokens": {
      "type": "integer",
      "title": "Priced Saved Output Tokens",
      "default": 0
    },
    "unpriced_saved_output_tokens": {
      "type": "integer",
      "title": "Unpriced Saved Output Tokens",
      "default": 0
    },
    "priced_output_savings_usd": {
      "type": "number",
      "title": "Priced Output Savings Usd",
      "default": 0.0
    },
    "baseline_events": {
      "type": "integer",
      "title": "Baseline Events",
      "default": 0
    },
    "reducing_events": {
      "type": "integer",
      "title": "Reducing Events",
      "default": 0
    },
    "baseline_input_tokens": {
      "type": "integer",
      "title": "Baseline Input Tokens",
      "default": 0
    },
    "baseline_saved_input_tokens": {
      "type": "integer",
      "title": "Baseline Saved Input Tokens",
      "default": 0
    },
    "input_reduction_ratio": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Input Reduction Ratio"
    },
    "input_reduction_ratio_p90": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Input Reduction Ratio P90"
    },
    "per_operation": {
      "items": {
        "$ref": "#/$defs/SavingsBreakdownRow"
      },
      "type": "array",
      "title": "Per Operation",
      "default": []
    },
    "per_surface": {
      "items": {
        "$ref": "#/$defs/SavingsBreakdownRow"
      },
      "type": "array",
      "title": "Per Surface",
      "default": []
    },
    "per_agent": {
      "items": {
        "$ref": "#/$defs/SavingsAgentRow"
      },
      "type": "array",
      "title": "Per Agent",
      "default": []
    },
    "per_model": {
      "items": {
        "$ref": "#/$defs/SavingsBreakdownRow"
      },
      "type": "array",
      "title": "Per Model",
      "default": []
    },
    "per_day": {
      "items": {
        "$ref": "#/$defs/SavingsBreakdownRow"
      },
      "type": "array",
      "title": "Per Day",
      "default": []
    },
    "opportunity_count": {
      "type": "integer",
      "title": "Opportunity Count",
      "default": 0
    },
    "opportunity_tokens_excluded": {
      "type": "integer",
      "title": "Opportunity Tokens Excluded",
      "default": 0
    },
    "per_opportunity_kind": {
      "items": {
        "$ref": "#/$defs/SavingsOpportunityRow"
      },
      "type": "array",
      "title": "Per Opportunity Kind",
      "default": []
    },
    "missed_events": {
      "type": "integer",
      "title": "Missed Events",
      "default": 0
    },
    "missed_tokens_est": {
      "type": "integer",
      "title": "Missed Tokens Est",
      "default": 0
    },
    "missed_window_days": {
      "type": "number",
      "title": "Missed Window Days",
      "default": 0.0
    },
    "reread_events": {
      "type": "integer",
      "title": "Reread Events",
      "default": 0
    },
    "reread_tokens_est": {
      "type": "integer",
      "title": "Reread Tokens Est",
      "default": 0
    }
  },
  "type": "object",
  "required": [
    "available"
  ],
  "$defs": {
    "SavingsAgentRow": {
      "properties": {
        "agent": {
          "type": "string",
          "title": "Agent"
        },
        "agent_display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Agent Display Name"
        },
        "events": {
          "type": "integer",
          "title": "Events",
          "default": 0
        },
        "saved_input_tokens": {
          "type": "integer",
          "title": "Saved Input Tokens",
          "default": 0
        }
      },
      "type": "object",
      "required": [
        "agent"
      ],
      "title": "SavingsAgentRow",
      "description": "One agent's savings, labelled from the identity registry."
    },
    "SavingsBreakdownRow": {
      "properties": {
        "group": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Group"
        },
        "events": {
          "type": "integer",
          "title": "Events",
          "default": 0
        },
        "saved_input_tokens": {
          "type": "integer",
          "title": "Saved Input Tokens",
          "default": 0
        }
      },
      "type": "object",
      "title": "SavingsBreakdownRow",
      "description": "One bucket of a savings breakdown.\n\n``group`` is nullable because one bucket genuinely has no name: an event\nwritten before its rate could be resolved has no model, and that is a real\nquantity -- how much saving carries no pricing evidence -- rather than a\ngap to drop from the list."
    },
    "SavingsOpportunityRow": {
      "properties": {
        "kind": {
          "type": "string",
          "title": "Kind"
        },
        "observations": {
          "type": "integer",
          "title": "Observations",
          "default": 0
        },
        "estimated_potential_input_tokens": {
          "type": "integer",
          "title": "Estimated Potential Input Tokens",
          "default": 0
        }
      },
      "type": "object",
      "required": [
        "kind"
      ],
      "title": "SavingsOpportunityRow",
      "description": "One kind of observed opportunity. Never part of achieved savings."
    }
  }
}