Evaluate an item, or run a version over many items
Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item’s state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation’s value and the result’s status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One’s POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision’s bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment’s default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait=<seconds> shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run’s evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item’s label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item’s content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.<i>. An item whose engines fail is that item’s result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run’s evaluations stay after it expires. include adds each result’s answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item’s engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content’s own failure is not. A run has its own 60 s budget (Prefer: wait doesn’t apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision’s labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases’ filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn’t changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case’s evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case’s stored content.
POST
/
v1
/
evaluate
curl --request POST \ --url https://api.moonbounce.ai/v1/evaluate \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data @- <<EOF{ "state": { "message": "My tent showed up two weeks late, I used it once on the trip it was for, and now it's day 39. Can I still return it?" }, "attribute_values": { "days_since_delivery": 39 }, "questions": { "item_used": { "type": "noul", "instructions": "Has the customer used the item beyond trying it on or setting it up once?", "reads": [ "state.message" ] }, "defective": { "type": "noul", "instructions": "Does the customer describe a defect, damage on arrival, or the item failing under normal use?", "reads": [ "state.message" ] } }, "attributes": { "days_since_delivery": { "type": "number", "minimum": 0 } }, "aggregations": { "grant_score": { "type": "weighted_mean", "inputs": [ { "name": "questions.item_used", "invert": true }, { "name": "questions.defective" } ] }, "handling": { "type": "rules", "rules": [ { "when": { "name": "attributes.days_since_delivery", "gt": 30 }, "outcome": "escalate" }, { "when": { "name": "aggregations.grant_score", "gte": 0.72 }, "outcome": "grant" }, { "when": { "name": "aggregations.grant_score", "lt": 0.38 }, "outcome": "deny" } ], "else": "escalate" } }, "result": "aggregations.handling", "moonbounce": { "decision_id": "refund-exception", "item_id": "t-001", "summary": "Late tent, used once, day 39", "dry_run": true }}EOF
An API key, sent as Authorization: Bearer <key>. Each operation lists the scope its key needs: decisions:evaluate (evaluate and read evaluations), decisions:feedback (your app's feedback) or decisions:develop (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.
Makes a retry safe. For 24 hours, the same key with the same request returns the first stored result (with Idempotent-Replayed: true); the same key with a different request is a 422 IDEMPOTENCY_KEY_REUSED. Keys are scoped to the organization and environment across every operation, so use a fresh key per request. A request that failed before its result was stored runs again when retried with its key.
The content the questions evaluate: any JSON value, including a string or JSON null, as in System One. A question with reads (state.<key> paths, or deeper such as state.order.id) sees only those values, nested as in the state.
An assertion, not a choice: the decision's engine binding picks the model (set it with POST /v1/decisions/{decision_id}/binding/revisions). Leave it out to use the binding. When sent, every question's bound model must be this one, or the call is a 400 invalid_request with parammodel, before any engine call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the binding it would create) and creates no content key. Accepted for System One compatibility.
The environment of the key that made the call: production or test. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.
The questions the result depends on (through result and every aggregation on its path) that have no answer, abstained or failed, as questions.x paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example status === "decided" && !missing.
A feature's path: questions.<name>, attributes.<name> or aggregations.<name>.
Required string length: 1 - 80
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Moonbounce Decisions API","colors":{"primary":"#1D5AB5","light":"#74A8F0","dark":"#478EF0"},"logo":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=367a5dedb5799a16c5737d136af68dc5","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=3b3e891bc9f1e5b26bee272f878ecd4f","href":"https://moonbounce.ai"},"favicon":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=78644bdbff4fda3f026238ea5135e647","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=946e0ccec72a87a3d707728e895639e1"},"background":{"color":{"light":"#FFFEEE","dark":"#000000"}},"navbar":{"primary":{"type":"button","label":"Request access","href":"https://app.moonbounce.ai"}},"banner":{"content":"Looking for the Clavata policy and labeling API? Those docs are at [docs.clavata.ai](https://docs.clavata.ai). You are on the docs for the Moonbounce decisions platform.","dismissible":true,"type":"info","color":{"light":"#1D5AB5","dark":"#1D5AB5"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moonbounce","hasAudioNarration":false,"actualSubdomain":"moonbounce","customDomains":["docs.moonbounce.ai"],"gitSource":{"type":"github","owner":"clavataai","repo":"decisions-platform","deployBranch":"main","contentDirectory":"docs/site","isPrivate":true,"mountPath":"","label":"","_id":"6ae8f7a905e268646b31d443"},"chroma":{"latestBuiltDeploymentHistoryId":"6aeca9a037327199c83cec33","collectionId":"e9c425b7-eb17-41bc-adf6-390226fcaa59","liveDeploymentHistoryId":"6aeca9a037327199c83cec33","schemaVersion":"v3"},"entitlements":{},"buildId":"6aed2b7f7f86d585254780fd","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API reference","count":39},{"language":"default","tag":"Endpoints","count":38},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"review","count":10},{"language":"default","tag":"suggestions","count":6},{"language":"default","tag":"feedback","count":5},{"language":"default","tag":"structures","count":5},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Build a decision","count":3},{"language":"default","tag":"Improve a decision","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"brand.css","content":":root{--mb-font-sans: \"Helvetica Neue\", Helvetica, Arial, sans-serif;--mb-font-mono: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace;--mb-rule: rgb(225, 230, 240);--mb-rule-strong: rgb(134, 134, 134)}.dark{--mb-rule: rgb(68, 69, 74);--mb-rule-strong: rgb(134, 134, 134)}body{font-family:var(--mb-font-sans)}h1,h2,h3,h4,h5,h6{font-family:var(--mb-font-sans);font-weight:600;letter-spacing:-0.011em}#page-title{letter-spacing:-0.03em;line-height:1.05}code,pre,kbd,samp{font-family:var(--mb-font-mono)}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(0, 0, 0);border-radius:999px}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(0, 0, 0)}.card,.callout,.code-block,.accordion,table{border-radius:0;box-shadow:none}.card{border:1px solid var(--mb-rule)}.card:hover{border-color:var(--mb-rule-strong)}"}],"page":{"pagePath":"api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items","slug":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items","pageMetadata":{"title":"Evaluate an item, or run a version over many items","description":"Two shapes. **One item** (`state`, `moonbounce.item_id`). **A run** (`items`, or `cases`): up to 200 items under one version, each exactly as one call would be, with a `run_id` for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item's `state` (each question sees only the values its `reads` paths name, such as `state.message` or `state.order.customer.tier`, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation's value and the result's status, value and outcome. The structure travels inline (`questions`, `attributes`, `aggregations`, `result`) or by hash in `moonbounce.structure_hash`, never both. The request is a superset of System One's POST /v1/systemone: a plain System One request plus a `result` and the `moonbounce` object is a valid call. `model` asserts the decision's bound model rather than choosing one (see `model`); choose the engine with `POST /v1/decisions/{decision_id}/binding/revisions` (the MCP tool `set_binding`). A decision gets its first binding in an environment, to the deployment's default engine, the first time a structure is registered for the decision there: by `POST /v1/decisions/{decision_id}/structures` (the MCP tool `register_structure`), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its `model` or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in `attributes` and are compared exactly by `rules` conditions (`gte`, `lt`, `is`, `in`). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; `Prefer: wait=\u003cseconds>` shortens it. **A run:** send `items` in place of `state` (each `{item_id, state, attribute_values?, expected?, label_source?}`, `item_id` unique in the run), the structure inline as for one item or by `moonbounce.structure_hash`, and `moonbounce.decision_id`. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with `moonbounce.dry_run: true` a dry run that stores only usage; each result carries its `id` (`evl_` or `dry_`). Score versions with dry runs: a stored run's evaluations are real traffic. `expected` (an outcome) and `label_source` (`human`, `synthetic` or `unknown`) are the item's label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item's content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming `items.\u003ci>`. An item whose engines fail is that item's result (status `failed`, with an `error` whose `code` says why and `retryable` whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until `expires_at`: pass its `run_id` to loss_report to judge it, so the results never pass through your context; a stored run's evaluations stay after it expires. `include` adds each result's `answers`, `attributes`, or `evaluation` (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item's engine spend is recorded and shown as its `cost` (money). An outage of any kind (unavailable, rate limited, timeout, auth) is `retryable`; only the content's own failure is not. A run has its own 60 s budget (`Prefer: wait` doesn't apply) and takes no `model`; items it could not start fail with `NOT_STARTED`, and a case it ran out of time for with `ENGINE_UNAVAILABLE` (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. **Stored cases:** send `cases` in place of `items` to evaluate the decision's labeled cases (the ones list_cases lists): `{evaluation_ids}`, or list_cases' filters (`outcomes`, `structure_hash`, `label_source`, `since`, `until`) with `limit` (default 200) and `cursor` (`cases.next_cursor` from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn't changed (same engine and model) and asking the rest; `refresh` names questions to ask afresh. Each result carries the case's `evaluation_id`, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set `cases.outcomes` to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case's stored content.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Two shapes. \", _jsx(_components.strong, {\n children: \"One item\"\n }), \" (\", _jsx(_components.code, {\n children: \"state\"\n }), \", \", _jsx(_components.code, {\n children: \"moonbounce.item_id\"\n }), \"). \", _jsx(_components.strong, {\n children: \"A run\"\n }), \" (\", _jsx(_components.code, {\n children: \"items\"\n }), \", or \", _jsx(_components.code, {\n children: \"cases\"\n }), \"): up to 200 items under one version, each exactly as one call would be, with a \", _jsx(_components.code, {\n children: \"run_id\"\n }), \" for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item’s \", _jsx(_components.code, {\n children: \"state\"\n }), \" (each question sees only the values its \", _jsx(_components.code, {\n children: \"reads\"\n }), \" paths name, such as \", _jsx(_components.code, {\n children: \"state.message\"\n }), \" or \", _jsx(_components.code, {\n children: \"state.order.customer.tier\"\n }), \", nested as in the state), evaluates the aggregations, and returns every answer, every aggregation’s value and the result’s status, value and outcome. The structure travels inline (\", _jsx(_components.code, {\n children: \"questions\"\n }), \", \", _jsx(_components.code, {\n children: \"attributes\"\n }), \", \", _jsx(_components.code, {\n children: \"aggregations\"\n }), \", \", _jsx(_components.code, {\n children: \"result\"\n }), \") or by hash in \", _jsx(_components.code, {\n children: \"moonbounce.structure_hash\"\n }), \", never both. The request is a superset of System One’s POST /v1/systemone: a plain System One request plus a \", _jsx(_components.code, {\n children: \"result\"\n }), \" and the \", _jsx(_components.code, {\n children: \"moonbounce\"\n }), \" object is a valid call. \", _jsx(_components.code, {\n children: \"model\"\n }), \" asserts the decision’s bound model rather than choosing one (see \", _jsx(_components.code, {\n children: \"model\"\n }), \"); choose the engine with \", _jsx(_components.code, {\n children: \"POST /v1/decisions/{decision_id}/binding/revisions\"\n }), \" (the MCP tool \", _jsx(_components.code, {\n children: \"set_binding\"\n }), \"). A decision gets its first binding in an environment, to the deployment’s default engine, the first time a structure is registered for the decision there: by \", _jsx(_components.code, {\n children: \"POST /v1/decisions/{decision_id}/structures\"\n }), \" (the MCP tool \", _jsx(_components.code, {\n children: \"register_structure\"\n }), \"), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its \", _jsx(_components.code, {\n children: \"model\"\n }), \" or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in \", _jsx(_components.code, {\n children: \"attributes\"\n }), \" and are compared exactly by \", _jsx(_components.code, {\n children: \"rules\"\n }), \" conditions (\", _jsx(_components.code, {\n children: \"gte\"\n }), \", \", _jsx(_components.code, {\n children: \"lt\"\n }), \", \", _jsx(_components.code, {\n children: \"is\"\n }), \", \", _jsx(_components.code, {\n children: \"in\"\n }), \"). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; \", _jsx(_components.code, {\n children: \"Prefer: wait=\u003cseconds>\"\n }), \" shortens it. \", _jsx(_components.strong, {\n children: \"A run:\"\n }), \" send \", _jsx(_components.code, {\n children: \"items\"\n }), \" in place of \", _jsx(_components.code, {\n children: \"state\"\n }), \" (each \", _jsx(_components.code, {\n children: \"{item_id, state, attribute_values?, expected?, label_source?}\"\n }), \", \", _jsx(_components.code, {\n children: \"item_id\"\n }), \" unique in the run), the structure inline as for one item or by \", _jsx(_components.code, {\n children: \"moonbounce.structure_hash\"\n }), \", and \", _jsx(_components.code, {\n children: \"moonbounce.decision_id\"\n }), \". Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with \", _jsx(_components.code, {\n children: \"moonbounce.dry_run: true\"\n }), \" a dry run that stores only usage; each result carries its \", _jsx(_components.code, {\n children: \"id\"\n }), \" (\", _jsx(_components.code, {\n children: \"evl_\"\n }), \" or \", _jsx(_components.code, {\n children: \"dry_\"\n }), \"). Score versions with dry runs: a stored run’s evaluations are real traffic. \", _jsx(_components.code, {\n children: \"expected\"\n }), \" (an outcome) and \", _jsx(_components.code, {\n children: \"label_source\"\n }), \" (\", _jsx(_components.code, {\n children: \"human\"\n }), \", \", _jsx(_components.code, {\n children: \"synthetic\"\n }), \" or \", _jsx(_components.code, {\n children: \"unknown\"\n }), \") are the item’s label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item’s content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming \", _jsx(_components.code, {\n children: \"items.\u003ci>\"\n }), \". An item whose engines fail is that item’s result (status \", _jsx(_components.code, {\n children: \"failed\"\n }), \", with an \", _jsx(_components.code, {\n children: \"error\"\n }), \" whose \", _jsx(_components.code, {\n children: \"code\"\n }), \" says why and \", _jsx(_components.code, {\n children: \"retryable\"\n }), \" whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until \", _jsx(_components.code, {\n children: \"expires_at\"\n }), \": pass its \", _jsx(_components.code, {\n children: \"run_id\"\n }), \" to loss_report to judge it, so the results never pass through your context; a stored run’s evaluations stay after it expires. \", _jsx(_components.code, {\n children: \"include\"\n }), \" adds each result’s \", _jsx(_components.code, {\n children: \"answers\"\n }), \", \", _jsx(_components.code, {\n children: \"attributes\"\n }), \", or \", _jsx(_components.code, {\n children: \"evaluation\"\n }), \" (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item’s engine spend is recorded and shown as its \", _jsx(_components.code, {\n children: \"cost\"\n }), \" (money). An outage of any kind (unavailable, rate limited, timeout, auth) is \", _jsx(_components.code, {\n children: \"retryable\"\n }), \"; only the content’s own failure is not. A run has its own 60 s budget (\", _jsx(_components.code, {\n children: \"Prefer: wait\"\n }), \" doesn’t apply) and takes no \", _jsx(_components.code, {\n children: \"model\"\n }), \"; items it could not start fail with \", _jsx(_components.code, {\n children: \"NOT_STARTED\"\n }), \", and a case it ran out of time for with \", _jsx(_components.code, {\n children: \"ENGINE_UNAVAILABLE\"\n }), \" (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. \", _jsx(_components.strong, {\n children: \"Stored cases:\"\n }), \" send \", _jsx(_components.code, {\n children: \"cases\"\n }), \" in place of \", _jsx(_components.code, {\n children: \"items\"\n }), \" to evaluate the decision’s labeled cases (the ones list_cases lists): \", _jsx(_components.code, {\n children: \"{evaluation_ids}\"\n }), \", or list_cases’ filters (\", _jsx(_components.code, {\n children: \"outcomes\"\n }), \", \", _jsx(_components.code, {\n children: \"structure_hash\"\n }), \", \", _jsx(_components.code, {\n children: \"label_source\"\n }), \", \", _jsx(_components.code, {\n children: \"since\"\n }), \", \", _jsx(_components.code, {\n children: \"until\"\n }), \") with \", _jsx(_components.code, {\n children: \"limit\"\n }), \" (default 200) and \", _jsx(_components.code, {\n children: \"cursor\"\n }), \" (\", _jsx(_components.code, {\n children: \"cases.next_cursor\"\n }), \" from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn’t changed (same engine and model) and asking the rest; \", _jsx(_components.code, {\n children: \"refresh\"\n }), \" names questions to ask afresh. Each result carries the case’s \", _jsx(_components.code, {\n children: \"evaluation_id\"\n }), \", and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set \", _jsx(_components.code, {\n children: \"cases.outcomes\"\n }), \" to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case’s stored content.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Evaluate an item, or run a version over many items","description":"Two shapes. **One item** (`state`, `moonbounce.item_id`). **A run** (`items`, or `cases`): up to 200 items under one version, each exactly as one call would be, with a `run_id` for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item's `state` (each question sees only the values its `reads` paths name, such as `state.message` or `state.order.customer.tier`, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation's value and the result's status, value and outcome. The structure travels inline (`questions`, `attributes`, `aggregations`, `result`) or by hash in `moonbounce.structure_hash`, never both. The request is a superset of System One's POST /v1/systemone: a plain System One request plus a `result` and the `moonbounce` object is a valid call. `model` asserts the decision's bound model rather than choosing one (see `model`); choose the engine with `POST /v1/decisions/{decision_id}/binding/revisions` (the MCP tool `set_binding`). A decision gets its first binding in an environment, to the deployment's default engine, the first time a structure is registered for the decision there: by `POST /v1/decisions/{decision_id}/structures` (the MCP tool `register_structure`), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its `model` or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in `attributes` and are compared exactly by `rules` conditions (`gte`, `lt`, `is`, `in`). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; `Prefer: wait=\u003cseconds>` shortens it. **A run:** send `items` in place of `state` (each `{item_id, state, attribute_values?, expected?, label_source?}`, `item_id` unique in the run), the structure inline as for one item or by `moonbounce.structure_hash`, and `moonbounce.decision_id`. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with `moonbounce.dry_run: true` a dry run that stores only usage; each result carries its `id` (`evl_` or `dry_`). Score versions with dry runs: a stored run's evaluations are real traffic. `expected` (an outcome) and `label_source` (`human`, `synthetic` or `unknown`) are the item's label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item's content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming `items.\u003ci>`. An item whose engines fail is that item's result (status `failed`, with an `error` whose `code` says why and `retryable` whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until `expires_at`: pass its `run_id` to loss_report to judge it, so the results never pass through your context; a stored run's evaluations stay after it expires. `include` adds each result's `answers`, `attributes`, or `evaluation` (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item's engine spend is recorded and shown as its `cost` (money). An outage of any kind (unavailable, rate limited, timeout, auth) is `retryable`; only the content's own failure is not. A run has its own 60 s budget (`Prefer: wait` doesn't apply) and takes no `model`; items it could not start fail with `NOT_STARTED`, and a case it ran out of time for with `ENGINE_UNAVAILABLE` (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. **Stored cases:** send `cases` in place of `items` to evaluate the decision's labeled cases (the ones list_cases lists): `{evaluation_ids}`, or list_cases' filters (`outcomes`, `structure_hash`, `label_source`, `since`, `until`) with `limit` (default 200) and `cursor` (`cases.next_cursor` from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn't changed (same engine and model) and asking the rest; `refresh` names questions to ask afresh. Each result carries the case's `evaluation_id`, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set `cases.outcomes` to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case's stored content.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"evaluate","x-mcp-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"tags":["evaluate"],"security":["24f6b0c7-c663-497f-83de-05d4a0735c68"],"summary":"Evaluate an item, or run a version over many items","description":"Two shapes. **One item** (`state`, `moonbounce.item_id`). **A run** (`items`, or `cases`): up to 200 items under one version, each exactly as one call would be, with a `run_id` for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item's `state` (each question sees only the values its `reads` paths name, such as `state.message` or `state.order.customer.tier`, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation's value and the result's status, value and outcome. The structure travels inline (`questions`, `attributes`, `aggregations`, `result`) or by hash in `moonbounce.structure_hash`, never both. The request is a superset of System One's POST /v1/systemone: a plain System One request plus a `result` and the `moonbounce` object is a valid call. `model` asserts the decision's bound model rather than choosing one (see `model`); choose the engine with `POST /v1/decisions/{decision_id}/binding/revisions` (the MCP tool `set_binding`). A decision gets its first binding in an environment, to the deployment's default engine, the first time a structure is registered for the decision there: by `POST /v1/decisions/{decision_id}/structures` (the MCP tool `register_structure`), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its `model` or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in `attributes` and are compared exactly by `rules` conditions (`gte`, `lt`, `is`, `in`). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; `Prefer: wait=\u003cseconds>` shortens it. **A run:** send `items` in place of `state` (each `{item_id, state, attribute_values?, expected?, label_source?}`, `item_id` unique in the run), the structure inline as for one item or by `moonbounce.structure_hash`, and `moonbounce.decision_id`. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with `moonbounce.dry_run: true` a dry run that stores only usage; each result carries its `id` (`evl_` or `dry_`). Score versions with dry runs: a stored run's evaluations are real traffic. `expected` (an outcome) and `label_source` (`human`, `synthetic` or `unknown`) are the item's label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item's content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming `items.\u003ci>`. An item whose engines fail is that item's result (status `failed`, with an `error` whose `code` says why and `retryable` whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until `expires_at`: pass its `run_id` to loss_report to judge it, so the results never pass through your context; a stored run's evaluations stay after it expires. `include` adds each result's `answers`, `attributes`, or `evaluation` (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item's engine spend is recorded and shown as its `cost` (money). An outage of any kind (unavailable, rate limited, timeout, auth) is `retryable`; only the content's own failure is not. A run has its own 60 s budget (`Prefer: wait` doesn't apply) and takes no `model`; items it could not start fail with `NOT_STARTED`, and a case it ran out of time for with `ENGINE_UNAVAILABLE` (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. **Stored cases:** send `cases` in place of `items` to evaluate the decision's labeled cases (the ones list_cases lists): `{evaluation_ids}`, or list_cases' filters (`outcomes`, `structure_hash`, `label_source`, `since`, `until`) with `limit` (default 200) and `cursor` (`cases.next_cursor` from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn't changed (same engine and model) and asking the rest; `refresh` names questions to ask afresh. Each result carries the case's `evaluation_id`, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set `cases.outcomes` to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case's stored content.","parameters":["20cb9625-af32-40a2-9a6e-4424f3b3ea47","b61704c5-a0dc-494c-a646-b3bcc96715df"],"requestBody":"02c9700e-98d9-413b-af23-f5220914cb8d","responses":{"200":"c6c3fa99-7fb9-42a2-8077-eb770b589f8f","201":"ca154c5a-e5be-4564-995f-5171587894dd","400":"85d055ee-8ad9-4c6e-96c9-0e6215904553","401":"eba79381-2429-46ef-b327-63aeba234451","403":"19dbccab-f73f-4fea-bd2b-23cd8541d266","404":"4efdcd87-5d19-4f22-ab3f-641c20febb25","409":"05ceea80-557a-4e34-89db-76f26d98d2d1","410":"d39b8725-295b-46f5-93d5-5f7e2ba84e0c","413":"9bffa7fa-2214-458d-a456-17e5850ab3e7","422":"f548a6db-e5b6-4110-aaf6-ec581997fa1f","429":"5e7a6887-e8e4-47a3-b309-2ee52b9d6fd6","502":"8a4b96bb-2195-4cf4-8dc1-b41fc6ffce74","503":"d3c86878-0fe7-469e-9908-bc515e4887e3"},"method":"post","type":"path","servers":["5199a294-99c0-440b-a171-e6a2ae5671e1"],"path":"/v1/evaluate","baseUrlOptions":["https://api.moonbounce.ai"],"title":"Evaluate an item, or run a version over many items","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"20cb9625-af32-40a2-9a6e-4424f3b3ea47":{"schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$","description":"Makes a retry safe. For 24 hours, the same key with the same request returns the first stored result (with Idempotent-Replayed: true); the same key with a different request is a 422 IDEMPOTENCY_KEY_REUSED. Keys are scoped to the organization and environment across every operation, so use a fresh key per request. A request that failed before its result was stored runs again when retried with its key.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Makes a retry safe. For 24 hours, the same key with the same request returns the first stored result (with Idempotent-Replayed: true); the same key with a different request is a 422 IDEMPOTENCY_KEY_REUSED. Keys are scoped to the organization and environment across every operation, so use a fresh key per request. A request that failed before its result was stored runs again when retried with its key.","name":"idempotency-key","in":"header"},"b61704c5-a0dc-494c-a646-b3bcc96715df":{"schema":{"type":"string","maxLength":256,"description":"`wait=\u003cseconds>` (RFC 7240) shortens a single item's 10 s budget; a run ignores it.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"`wait=\u003cseconds>` (RFC 7240) shortens a single item's 10 s budget; a run ignores it.","name":"prefer","in":"header"}},"requestBody":{"required":true,"content":{"application/json":{"examples":{"inline":{"title":"inline","value":{"state":{"message":"My tent showed up two weeks late, I used it once on the trip it was for, and now it's day 39. Can I still return it?"},"attribute_values":{"days_since_delivery":39},"questions":{"item_used":{"type":"noul","instructions":"Has the customer used the item beyond trying it on or setting it up once?","reads":["state.message"]},"defective":{"type":"noul","instructions":"Does the customer describe a defect, damage on arrival, or the item failing under normal use?","reads":["state.message"]}},"attributes":{"days_since_delivery":{"type":"number","minimum":0}},"aggregations":{"grant_score":{"type":"weighted_mean","inputs":[{"name":"questions.item_used","invert":true},{"name":"questions.defective"}]},"handling":{"type":"rules","rules":[{"when":{"name":"attributes.days_since_delivery","gt":30},"outcome":"escalate"},{"when":{"name":"aggregations.grant_score","gte":0.72},"outcome":"grant"},{"when":{"name":"aggregations.grant_score","lt":0.38},"outcome":"deny"}],"else":"escalate"}},"result":"aggregations.handling","moonbounce":{"decision_id":"refund-exception","item_id":"t-001","summary":"Late tent, used once, day 39","dry_run":true}}},"by_hash":{"title":"by_hash","value":{"state":{"message":"My tent showed up two weeks late, I used it once on the trip it was for, and now it's day 39. Can I still return it?"},"attribute_values":{"days_since_delivery":39},"moonbounce":{"decision_id":"refund-exception","item_id":"t-001","structure_hash":"sha256:bdad6e5b1b879209305f1555b43ec62666a4d74a925280c66e54cc4dc07bb1ae"}}}},"schema":{"oneOf":[{"type":"object","required":["questions","result","state","moonbounce"],"properties":{"questions":{"type":"object","additionalProperties":{"type":"object","description":"P(true) for a statement about the state.","required":["type","instructions"],"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.0.questions.additionalProperties.type","typeLabel":"enum\u003cstring>"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.questions.additionalProperties.instructions.oneOf.0","typeLabel":"string"},{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.questions.additionalProperties.instructions.oneOf.1.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"oneOf.0.questions.additionalProperties.instructions.oneOf.1","typeLabel":"object"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"oneOf.0.questions.additionalProperties.instructions.oneOf.2.items.[INDEX]","typeLabel":"any"},"minItems":1,"isRequired":true,"uniqueKey":"oneOf.0.questions.additionalProperties.instructions.oneOf.2","typeLabel":"any[]"}],"isRequired":true,"uniqueKey":"oneOf.0.questions.additionalProperties.instructions","typeLabel":"string | object | any[]"},"criteria":{"type":"object","properties":{"true":{"type":"string","minLength":1,"maxLength":4000,"uniqueKey":"oneOf.0.questions.additionalProperties.criteria.true","typeLabel":"string"},"false":{"type":"string","minLength":1,"maxLength":4000,"uniqueKey":"oneOf.0.questions.additionalProperties.criteria.false","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.questions.additionalProperties.criteria","typeLabel":"object"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.0.questions.additionalProperties.reads.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":64,"description":"Paths into an object `state` this question reads, such as `state.message` or `state.order.customer.tier`. The question sees just those values, nested as in the state. Without it the question sees the whole state, as in System One. Every path must exist in the call's `state`; no entry may repeat or contain another.","uniqueKey":"oneOf.0.questions.additionalProperties.reads","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.questions.additionalProperties","typeLabel":"object"},"description":"System One questions, keyed by name.","isRequired":true,"uniqueKey":"oneOf.0.questions","typeLabel":"object"},"result":{"type":"string","minLength":1,"maxLength":80,"description":"The final feature's path, such as `aggregations.band`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.result","typeLabel":"string"},"state":{"description":"The content the questions evaluate: any JSON value, including a string or JSON null, as in System One. A question with `reads` (`state.\u003ckey>` paths, or deeper such as `state.order.id`) sees only those values, nested as in the state.","isRequired":true,"uniqueKey":"oneOf.0.state","typeLabel":"any"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"Your id for the thing being judged. Groups evaluations of the same thing; feedback by item binds to its latest evaluation.","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.0.moonbounce.structure_hash","typeLabel":"any"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.0.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","minLength":1,"maxLength":140,"description":"One line for review cards. Never shown to the model.","uniqueKey":"oneOf.0.moonbounce.summary","typeLabel":"string"},"dry_run":{"type":"boolean","description":"Spends engine calls and stores only usage, with no evaluation or feedback target.","uniqueKey":"oneOf.0.moonbounce.dry_run","typeLabel":"boolean"}},"required":["decision_id","item_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.moonbounce","typeLabel":"object"},"attributes":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","required":["type","enum"],"properties":{"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0.enum.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":255,"isRequired":true,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0.enum","typeLabel":"string[]"},"default":{"type":"string","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0.default","typeLabel":"string"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"minimum":{"type":"number","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1.minimum","typeLabel":"number"},"maximum":{"type":"number","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1.maximum","typeLabel":"number"},"default":{"type":"number","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1.default","typeLabel":"number"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["boolean"],"isRequired":true,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"default":{"type":"boolean","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.2.default","typeLabel":"boolean"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.2.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.attributes.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.0.attributes.additionalProperties","typeLabel":"object"},"description":"Values your app supplies with each call in `attribute_values`. The model never sees them.","uniqueKey":"oneOf.0.attributes","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"Σ wᵢ·xᵢ / Σ wᵢ: a weighted average from 0 to 1, not a probability.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["weighted_mean"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].name","typeLabel":"string"},"weight":{"type":"number","exclusiveMinimum":0,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].weight","typeLabel":"number"},"invert":{"type":"boolean","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"σ(bias + Σ wᵢ·xᵢ), with signed weights on raw input values.","required":["type","bias","inputs"],"properties":{"type":{"type":"string","enum":["logistic"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"bias":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.bias","typeLabel":"number"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX].name","typeLabel":"string"},"weight":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX].weight","typeLabel":"number"}},"required":["name","weight"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"min xᵢ: all of these, when they overlap.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["min"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.2","typeLabel":"object"},{"type":"object","description":"max xᵢ: any of these, when they overlap.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["max"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.3","typeLabel":"object"},{"type":"object","description":"Πxᵢ: all of these, when they are independent.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["product"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.4","typeLabel":"object"},{"type":"object","description":"1 − Π(1 − xᵢ): any of these, when they are independent.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["noisy_or"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.5","typeLabel":"object"},{"type":"object","description":"1 when every input passes its threshold (default ≥ 0.5), else 0.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].lt","typeLabel":"number"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.6","typeLabel":"object"},{"type":"object","description":"1 when any input passes its threshold (default ≥ 0.5), else 0.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["any"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].lt","typeLabel":"number"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.7","typeLabel":"object"},{"type":"object","description":"Names an outcome for each range of one feature's value. `at` means ≥; `below` is under the first cut.","required":["type","input","below","cuts"],"properties":{"type":{"type":"string","enum":["bands"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.type","typeLabel":"enum\u003cstring>"},"input":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.input","typeLabel":"string"},"below":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.below","typeLabel":"string"},"cuts":{"type":"array","items":{"type":"object","properties":{"at":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX].at","typeLabel":"number"},"outcome":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX].outcome","typeLabel":"string"}},"required":["at","outcome"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":9,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.cuts","typeLabel":"object[]"},"abstain":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8.abstain","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.8","typeLabel":"object"},{"type":"object","description":"The first rule whose condition is true names its `outcome`; otherwise `else`.","required":["type","rules","else"],"properties":{"type":{"type":"string","enum":["rules"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.type","typeLabel":"enum\u003cstring>"},"rules":{"type":"array","items":{"type":"object","properties":{"when":{"oneOf":[{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.lt","typeLabel":"number"},"is":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.is","typeLabel":"string"},"in":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.in.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":255,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.in","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0","typeLabel":"object"},{"type":"object","required":["all"],"properties":{"all":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.1.all","typeLabel":"array"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.1","typeLabel":"object"},{"type":"object","required":["any"],"properties":{"any":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.2.any","typeLabel":"array"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.2","typeLabel":"object"},{"type":"object","required":["not"],"properties":{"not":{"oneOf":[{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e","isRequired":true}],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.3.not","typeLabel":"any"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when","typeLabel":"object"},"outcome":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].outcome","typeLabel":"string"}},"required":["when","outcome"],"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.rules","typeLabel":"object[]"},"else":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9.else","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.9","typeLabel":"object"},{"type":"object","description":"Maps a label straight to an outcome.","required":["type","input","cases"],"properties":{"type":{"type":"string","enum":["match"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.type","typeLabel":"enum\u003cstring>"},"input":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.input","typeLabel":"string"},"cases":{"type":"object","additionalProperties":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.cases.additionalProperties","typeLabel":"string"},"description":"Maps labels to outcomes. \"__proto__\" is not supported as a case key; use a rules is-condition for that label.","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.cases","typeLabel":"object"},"else":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.else","typeLabel":"string"},"abstain":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10.abstain","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.aggregations.additionalProperties.oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.0.aggregations.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.0.aggregations","typeLabel":"object"},"model":{"type":"string","minLength":1,"maxLength":128,"description":"An assertion, not a choice: the decision's engine binding picks the model (set it with `POST /v1/decisions/{decision_id}/binding/revisions`). Leave it out to use the binding. When sent, every question's bound model must be this one, or the call is a 400 invalid_request with `param` `model`, before any engine call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the binding it would create) and creates no content key. Accepted for System One compatibility.","uniqueKey":"oneOf.0.model","typeLabel":"string"},"attribute_values":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"oneOf.0.attribute_values.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.attribute_values.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.attribute_values.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.0.attribute_values.additionalProperties","typeLabel":"string | number | boolean"},"description":"This call's attribute values. Each must match its declaration; a declared one without a default is required.","uniqueKey":"oneOf.0.attribute_values","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["state","moonbounce"],"properties":{"state":{"description":"The content the questions evaluate: any JSON value, including a string or JSON null, as in System One. A question with `reads` (`state.\u003ckey>` paths, or deeper such as `state.order.id`) sees only those values, nested as in the state.","isRequired":true,"uniqueKey":"oneOf.1.state","typeLabel":"any"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"Your id for the thing being judged. Groups evaluations of the same thing; feedback by item binds to its latest evaluation.","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.1.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","minLength":1,"maxLength":140,"description":"One line for review cards. Never shown to the model.","uniqueKey":"oneOf.1.moonbounce.summary","typeLabel":"string"},"dry_run":{"type":"boolean","description":"Spends engine calls and stores only usage, with no evaluation or feedback target.","uniqueKey":"oneOf.1.moonbounce.dry_run","typeLabel":"boolean"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.moonbounce","typeLabel":"object"},"model":{"type":"string","minLength":1,"maxLength":128,"description":"An assertion, not a choice: the decision's engine binding picks the model (set it with `POST /v1/decisions/{decision_id}/binding/revisions`). Leave it out to use the binding. When sent, every question's bound model must be this one, or the call is a 400 invalid_request with `param` `model`, before any engine call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the binding it would create) and creates no content key. Accepted for System One compatibility.","uniqueKey":"oneOf.1.model","typeLabel":"string"},"attribute_values":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"oneOf.1.attribute_values.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.attribute_values.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.attribute_values.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.1.attribute_values.additionalProperties","typeLabel":"string | number | boolean"},"description":"This call's attribute values. Each must match its declaration; a declared one without a default is required.","uniqueKey":"oneOf.1.attribute_values","typeLabel":"object"},"questions":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.1.questions","typeLabel":"any"},"attributes":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.1.attributes","typeLabel":"any"},"aggregations":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.1.aggregations","typeLabel":"any"},"result":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.1.result","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["questions","result","moonbounce"],"properties":{"questions":{"type":"object","additionalProperties":{"type":"object","description":"P(true) for a statement about the state.","required":["type","instructions"],"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.2.questions.additionalProperties.type","typeLabel":"enum\u003cstring>"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.questions.additionalProperties.instructions.oneOf.0","typeLabel":"string"},{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.2.questions.additionalProperties.instructions.oneOf.1.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"oneOf.2.questions.additionalProperties.instructions.oneOf.1","typeLabel":"object"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"oneOf.2.questions.additionalProperties.instructions.oneOf.2.items.[INDEX]","typeLabel":"any"},"minItems":1,"isRequired":true,"uniqueKey":"oneOf.2.questions.additionalProperties.instructions.oneOf.2","typeLabel":"any[]"}],"isRequired":true,"uniqueKey":"oneOf.2.questions.additionalProperties.instructions","typeLabel":"string | object | any[]"},"criteria":{"type":"object","properties":{"true":{"type":"string","minLength":1,"maxLength":4000,"uniqueKey":"oneOf.2.questions.additionalProperties.criteria.true","typeLabel":"string"},"false":{"type":"string","minLength":1,"maxLength":4000,"uniqueKey":"oneOf.2.questions.additionalProperties.criteria.false","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.questions.additionalProperties.criteria","typeLabel":"object"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.2.questions.additionalProperties.reads.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":64,"description":"Paths into an object `state` this question reads, such as `state.message` or `state.order.customer.tier`. The question sees just those values, nested as in the state. Without it the question sees the whole state, as in System One. Every path must exist in the call's `state`; no entry may repeat or contain another.","uniqueKey":"oneOf.2.questions.additionalProperties.reads","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.questions.additionalProperties","typeLabel":"object"},"description":"System One questions, keyed by name.","isRequired":true,"uniqueKey":"oneOf.2.questions","typeLabel":"object"},"result":{"type":"string","minLength":1,"maxLength":80,"description":"The final feature's path, such as `aggregations.band`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.result","typeLabel":"string"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.decision_id","typeLabel":"string"},"structure_hash":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.2.moonbounce.structure_hash","typeLabel":"any"},"dry_run":{"type":"boolean","description":"As on one item, for every item: `true` stores no evaluation (only usage, and the run's results for a day); absent or `false` stores each item as an evaluation.","uniqueKey":"oneOf.2.moonbounce.dry_run","typeLabel":"boolean"}},"required":["decision_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.moonbounce","typeLabel":"object"},"attributes":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","required":["type","enum"],"properties":{"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0.enum.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":255,"isRequired":true,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0.enum","typeLabel":"string[]"},"default":{"type":"string","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0.default","typeLabel":"string"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"minimum":{"type":"number","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1.minimum","typeLabel":"number"},"maximum":{"type":"number","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1.maximum","typeLabel":"number"},"default":{"type":"number","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1.default","typeLabel":"number"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["boolean"],"isRequired":true,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"default":{"type":"boolean","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.2.default","typeLabel":"boolean"},"source":{"type":"string","minLength":1,"maxLength":200,"description":"The model and version behind this attribute, such as `toxicity-classifier-v3`. Hashed.","uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.2.source","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.attributes.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.2.attributes.additionalProperties","typeLabel":"object"},"description":"Values your app supplies with each call in `attribute_values`. The model never sees them.","uniqueKey":"oneOf.2.attributes","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"Σ wᵢ·xᵢ / Σ wᵢ: a weighted average from 0 to 1, not a probability.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["weighted_mean"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].name","typeLabel":"string"},"weight":{"type":"number","exclusiveMinimum":0,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].weight","typeLabel":"number"},"invert":{"type":"boolean","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"σ(bias + Σ wᵢ·xᵢ), with signed weights on raw input values.","required":["type","bias","inputs"],"properties":{"type":{"type":"string","enum":["logistic"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"bias":{"type":"number","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.bias","typeLabel":"number"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX].name","typeLabel":"string"},"weight":{"type":"number","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX].weight","typeLabel":"number"}},"required":["name","weight"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"min xᵢ: all of these, when they overlap.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["min"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.2","typeLabel":"object"},{"type":"object","description":"max xᵢ: any of these, when they overlap.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["max"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.3","typeLabel":"object"},{"type":"object","description":"Πxᵢ: all of these, when they are independent.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["product"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.4","typeLabel":"object"},{"type":"object","description":"1 − Π(1 − xᵢ): any of these, when they are independent.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["noisy_or"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX].name","typeLabel":"string"},"invert":{"type":"boolean","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX].invert","typeLabel":"boolean"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.5","typeLabel":"object"},{"type":"object","description":"1 when every input passes its threshold (default ≥ 0.5), else 0.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX].lt","typeLabel":"number"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.6","typeLabel":"object"},{"type":"object","description":"1 when any input passes its threshold (default ≥ 0.5), else 0.","required":["type","inputs"],"properties":{"type":{"type":"string","enum":["any"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.type","typeLabel":"enum\u003cstring>"},"inputs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX].lt","typeLabel":"number"}},"required":["name"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7.inputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.7","typeLabel":"object"},{"type":"object","description":"Names an outcome for each range of one feature's value. `at` means ≥; `below` is under the first cut.","required":["type","input","below","cuts"],"properties":{"type":{"type":"string","enum":["bands"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.type","typeLabel":"enum\u003cstring>"},"input":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.input","typeLabel":"string"},"below":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.below","typeLabel":"string"},"cuts":{"type":"array","items":{"type":"object","properties":{"at":{"type":"number","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX].at","typeLabel":"number"},"outcome":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX].outcome","typeLabel":"string"}},"required":["at","outcome"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.cuts.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":9,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.cuts","typeLabel":"object[]"},"abstain":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8.abstain","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.8","typeLabel":"object"},{"type":"object","description":"The first rule whose condition is true names its `outcome`; otherwise `else`.","required":["type","rules","else"],"properties":{"type":{"type":"string","enum":["rules"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.type","typeLabel":"enum\u003cstring>"},"rules":{"type":"array","items":{"type":"object","properties":{"when":{"oneOf":[{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.name","typeLabel":"string"},"gte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.gte","typeLabel":"number"},"gt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.gt","typeLabel":"number"},"lte":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.lte","typeLabel":"number"},"lt":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.lt","typeLabel":"number"},"is":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.is","typeLabel":"string"},"in":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.in.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":255,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.in","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.0","typeLabel":"object"},{"type":"object","required":["all"],"properties":{"all":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.1.all","typeLabel":"array"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.1","typeLabel":"object"},{"type":"object","required":["any"],"properties":{"any":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.2.any","typeLabel":"array"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.2","typeLabel":"object"},{"type":"object","required":["not"],"properties":{"not":{"oneOf":[{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e","isRequired":true}],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.3.not","typeLabel":"any"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].when","typeLabel":"object"},"outcome":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX].outcome","typeLabel":"string"}},"required":["when","outcome"],"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":64,"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.rules","typeLabel":"object[]"},"else":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9.else","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.9","typeLabel":"object"},{"type":"object","description":"Maps a label straight to an outcome.","required":["type","input","cases"],"properties":{"type":{"type":"string","enum":["match"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.type","typeLabel":"enum\u003cstring>"},"input":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.input","typeLabel":"string"},"cases":{"type":"object","additionalProperties":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.cases.additionalProperties","typeLabel":"string"},"description":"Maps labels to outcomes. \"__proto__\" is not supported as a case key; use a rules is-condition for that label.","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.cases","typeLabel":"object"},"else":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.else","typeLabel":"string"},"abstain":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10.abstain","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.aggregations.additionalProperties.oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.2.aggregations.additionalProperties","typeLabel":"object"},"uniqueKey":"oneOf.2.aggregations","typeLabel":"object"},"items":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"Your id for the item, unique in the run: its result and loss rows carry it.","isRequired":true,"uniqueKey":"oneOf.2.\\items.items.[INDEX].item_id","typeLabel":"string"},"state":{"description":"The content the questions evaluate, as on evaluate.","isRequired":true,"uniqueKey":"oneOf.2.\\items.items.[INDEX].state","typeLabel":"any"},"attribute_values":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"oneOf.2.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.2.\\items.items.[INDEX].attribute_values.additionalProperties","typeLabel":"string | number | boolean"},"description":"The item's attribute values, as on evaluate.","uniqueKey":"oneOf.2.\\items.items.[INDEX].attribute_values","typeLabel":"object"},"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the item should get. Carried with the run for loss_report; evaluation ignores it.","uniqueKey":"oneOf.2.\\items.items.[INDEX].expected","typeLabel":"string"},"label_source":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where `expected` came from. Default `unknown`.","uniqueKey":"oneOf.2.\\items.items.[INDEX].label_source","typeLabel":"enum\u003cstring>"}},"required":["item_id","state"],"additionalProperties":false,"uniqueKey":"oneOf.2.\\items.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":200,"description":"The items to evaluate under the same version, each exactly as one evaluate would. Sending `items` (in place of `state`) makes this a run.","uniqueKey":"oneOf.2.\\items","typeLabel":"object[]"},"cases":{"oneOf":[{"type":"object","description":"The decision's labeled cases to evaluate, in place of `items`: by `evaluation_ids`, or by the filters list_cases takes (the same cases, newest label first, `limit` per run; pass `cases.next_cursor` back for the next page). Always dry runs. Each case is replayed: a question unchanged since the case ran reuses the answer it stored (the same engine and model), the rest are asked. Its label, label source and answer corrections go with the run for loss_report.","required":["evaluation_ids"],"properties":{"evaluation_ids":{"type":"array","items":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","uniqueKey":"oneOf.2.cases.oneOf.0.evaluation_ids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":200,"description":"Labeled cases by id (list_cases gives them).","isRequired":true,"uniqueKey":"oneOf.2.cases.oneOf.0.evaluation_ids","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2.cases.oneOf.0","typeLabel":"object"},{"type":"object","description":"The decision's labeled cases to evaluate, in place of `items`: by `evaluation_ids`, or by the filters list_cases takes (the same cases, newest label first, `limit` per run; pass `cases.next_cursor` back for the next page). Always dry runs. Each case is replayed: a question unchanged since the case ran reuses the answer it stored (the same engine and model), the rest are asked. Its label, label source and answer corrections go with the run for loss_report.","properties":{"outcomes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.2.cases.oneOf.1.outcomes.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"Only cases labeled one of these outcomes.","uniqueKey":"oneOf.2.cases.oneOf.1.outcomes","typeLabel":"string[]"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Only cases that ran under this version.","uniqueKey":"oneOf.2.cases.oneOf.1.structure_hash","typeLabel":"string"},"label_source":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where the label came from: `human`, `synthetic` (an agent made it) or `unknown`. Only `human` counts toward the no-new-severe-mistake rule.","uniqueKey":"oneOf.2.cases.oneOf.1.label_source","typeLabel":"enum\u003cstring>"},"since":{"type":"string","format":"date-time","description":"Only cases whose evaluation ran at or after this time.","uniqueKey":"oneOf.2.cases.oneOf.1.since","typeLabel":"string\u003cdate-time>"},"until":{"type":"string","format":"date-time","description":"Only cases whose evaluation ran before this time.","uniqueKey":"oneOf.2.cases.oneOf.1.until","typeLabel":"string\u003cdate-time>"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Cases per run. Default 200.","uniqueKey":"oneOf.2.cases.oneOf.1.limit","typeLabel":"integer"},"cursor":{"type":"string","minLength":1,"maxLength":1024,"description":"`cases.next_cursor` from the previous run.","uniqueKey":"oneOf.2.cases.oneOf.1.cursor","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2.cases.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.2.cases","typeLabel":"object"},"refresh":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.refresh.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"With `cases`: questions that get fresh answers instead of the ones the cases stored (as a preview refreshes the base questions a candidate changed or dropped).","uniqueKey":"oneOf.2.refresh","typeLabel":"string[]"},"include":{"type":"array","items":{"type":"string","enum":["answers","attributes","evaluation"],"uniqueKey":"oneOf.2.include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Add to each result its `answers`, its `attributes` (as resolved, defaults applied), or its `evaluation`: everything evaluate returns for that item on its own. Default: none.","uniqueKey":"oneOf.2.include","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"uniqueKey":"oneOf.2","typeLabel":"object"},{"type":"object","required":["moonbounce"],"properties":{"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.decision_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.structure_hash","typeLabel":"string"},"dry_run":{"type":"boolean","description":"As on one item, for every item: `true` stores no evaluation (only usage, and the run's results for a day); absent or `false` stores each item as an evaluation.","uniqueKey":"oneOf.3.moonbounce.dry_run","typeLabel":"boolean"}},"required":["decision_id","structure_hash"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.3.moonbounce","typeLabel":"object"},"items":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"Your id for the item, unique in the run: its result and loss rows carry it.","isRequired":true,"uniqueKey":"oneOf.3.\\items.items.[INDEX].item_id","typeLabel":"string"},"state":{"description":"The content the questions evaluate, as on evaluate.","isRequired":true,"uniqueKey":"oneOf.3.\\items.items.[INDEX].state","typeLabel":"any"},"attribute_values":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"oneOf.3.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.3.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.3.\\items.items.[INDEX].attribute_values.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.3.\\items.items.[INDEX].attribute_values.additionalProperties","typeLabel":"string | number | boolean"},"description":"The item's attribute values, as on evaluate.","uniqueKey":"oneOf.3.\\items.items.[INDEX].attribute_values","typeLabel":"object"},"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the item should get. Carried with the run for loss_report; evaluation ignores it.","uniqueKey":"oneOf.3.\\items.items.[INDEX].expected","typeLabel":"string"},"label_source":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where `expected` came from. Default `unknown`.","uniqueKey":"oneOf.3.\\items.items.[INDEX].label_source","typeLabel":"enum\u003cstring>"}},"required":["item_id","state"],"additionalProperties":false,"uniqueKey":"oneOf.3.\\items.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":200,"description":"The items to evaluate under the same version, each exactly as one evaluate would. Sending `items` (in place of `state`) makes this a run.","uniqueKey":"oneOf.3.\\items","typeLabel":"object[]"},"cases":{"oneOf":[{"type":"object","description":"The decision's labeled cases to evaluate, in place of `items`: by `evaluation_ids`, or by the filters list_cases takes (the same cases, newest label first, `limit` per run; pass `cases.next_cursor` back for the next page). Always dry runs. Each case is replayed: a question unchanged since the case ran reuses the answer it stored (the same engine and model), the rest are asked. Its label, label source and answer corrections go with the run for loss_report.","required":["evaluation_ids"],"properties":{"evaluation_ids":{"type":"array","items":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","uniqueKey":"oneOf.3.cases.oneOf.0.evaluation_ids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":200,"description":"Labeled cases by id (list_cases gives them).","isRequired":true,"uniqueKey":"oneOf.3.cases.oneOf.0.evaluation_ids","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.3.cases.oneOf.0","typeLabel":"object"},{"type":"object","description":"The decision's labeled cases to evaluate, in place of `items`: by `evaluation_ids`, or by the filters list_cases takes (the same cases, newest label first, `limit` per run; pass `cases.next_cursor` back for the next page). Always dry runs. Each case is replayed: a question unchanged since the case ran reuses the answer it stored (the same engine and model), the rest are asked. Its label, label source and answer corrections go with the run for loss_report.","properties":{"outcomes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.3.cases.oneOf.1.outcomes.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"Only cases labeled one of these outcomes.","uniqueKey":"oneOf.3.cases.oneOf.1.outcomes","typeLabel":"string[]"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Only cases that ran under this version.","uniqueKey":"oneOf.3.cases.oneOf.1.structure_hash","typeLabel":"string"},"label_source":{"type":"string","enum":["human","synthetic","unknown"],"description":"Where the label came from: `human`, `synthetic` (an agent made it) or `unknown`. Only `human` counts toward the no-new-severe-mistake rule.","uniqueKey":"oneOf.3.cases.oneOf.1.label_source","typeLabel":"enum\u003cstring>"},"since":{"type":"string","format":"date-time","description":"Only cases whose evaluation ran at or after this time.","uniqueKey":"oneOf.3.cases.oneOf.1.since","typeLabel":"string\u003cdate-time>"},"until":{"type":"string","format":"date-time","description":"Only cases whose evaluation ran before this time.","uniqueKey":"oneOf.3.cases.oneOf.1.until","typeLabel":"string\u003cdate-time>"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Cases per run. Default 200.","uniqueKey":"oneOf.3.cases.oneOf.1.limit","typeLabel":"integer"},"cursor":{"type":"string","minLength":1,"maxLength":1024,"description":"`cases.next_cursor` from the previous run.","uniqueKey":"oneOf.3.cases.oneOf.1.cursor","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.3.cases.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.3.cases","typeLabel":"object"},"refresh":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.3.refresh.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"With `cases`: questions that get fresh answers instead of the ones the cases stored (as a preview refreshes the base questions a candidate changed or dropped).","uniqueKey":"oneOf.3.refresh","typeLabel":"string[]"},"include":{"type":"array","items":{"type":"string","enum":["answers","attributes","evaluation"],"uniqueKey":"oneOf.3.include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Add to each result its `answers`, its `attributes` (as resolved, defaults applied), or its `evaluation`: everything evaluate returns for that item on its own. Default: none.","uniqueKey":"oneOf.3.include","typeLabel":"enum\u003cstring>[]"},"questions":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.3.questions","typeLabel":"any"},"attributes":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.3.attributes","typeLabel":"any"},"aggregations":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.3.aggregations","typeLabel":"any"},"result":{"not":{},"description":"Must be absent: send the structure inline or by its hash, not both.","x-moonbounce-absent":true,"uniqueKey":"oneOf.3.result","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"oneOf.3","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c6c3fa99-7fb9-42a2-8077-eb770b589f8f":{"description":"The evaluation","headers":{"Idempotent-Replayed":{"schema":{"type":"string","enum":["true"],"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."},"required":false,"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status","value"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.0.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.0.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.0.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.0.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.0.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.0.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.0.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.0.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.0.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.0.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.0.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.0.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.0.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.0.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.0.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.0.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.0.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.0.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.0.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.0.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.0.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.usage","typeLabel":"object"},"status":{"type":"string","enum":["computed"],"isRequired":true,"uniqueKey":"oneOf.0.status","typeLabel":"enum\u003cstring>"},"value":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.value","typeLabel":"number"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"oneOf.0.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.0.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.0.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.0.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.0.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.0.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.0.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.0.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.0.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.calls","typeLabel":"object[]"},"outcome":{"not":{},"description":"Must be absent: a computed result is a number, with no outcome.","x-moonbounce-absent":true,"uniqueKey":"oneOf.0.outcome","typeLabel":"any"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.0.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.0.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status","outcome"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.1.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.1.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.1.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.1.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.1.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.1.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.1.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.1.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.1.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.1.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.1.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.1.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.1.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.1.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.1.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.1.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.1.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.1.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.1.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.1.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.1.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.usage","typeLabel":"object"},"status":{"type":"string","enum":["decided"],"isRequired":true,"uniqueKey":"oneOf.1.status","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","isRequired":true,"uniqueKey":"oneOf.1.outcome","typeLabel":"string"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"oneOf.1.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.1.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.1.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.1.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.1.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.1.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.1.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.1.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.1.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.1.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.calls","typeLabel":"object[]"},"value":{"type":"number","uniqueKey":"oneOf.1.value","typeLabel":"number"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.1.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.1.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.2.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.2.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.2.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.2.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.2.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.2.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.2.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.2.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.2.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.2.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.2.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.2.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.2.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.2.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.2.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.2.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.2.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.2.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.2.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.2.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.2.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.2.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.2.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.2.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.2.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.usage","typeLabel":"object"},"status":{"type":"string","enum":["abstained"],"isRequired":true,"uniqueKey":"oneOf.2.status","typeLabel":"enum\u003cstring>"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"oneOf.2.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.2.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.2.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.2.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.2.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.2.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.2.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.2.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.2.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.2.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.2.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.2.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.2.calls","typeLabel":"object[]"},"value":{"not":{},"description":"Must be absent: an abstained result has no value.","x-moonbounce-absent":true,"uniqueKey":"oneOf.2.value","typeLabel":"any"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.2.outcome","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.2.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.2.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.2","typeLabel":"object"},{"type":"object","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status","value"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.3.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.3.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.3.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.3.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.3.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.3.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.3.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.3.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.3.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.3.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.3.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.3.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.3.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.3.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.3.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.3.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.3.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.3.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.3.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.3.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.3.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.3.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.3.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.3.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.3.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.3.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.3.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.3.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.3.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.3.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.3.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.3.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.cost","typeLabel":"object"},"status":{"type":"string","enum":["computed"],"isRequired":true,"uniqueKey":"oneOf.3.status","typeLabel":"enum\u003cstring>"},"value":{"type":"number","isRequired":true,"uniqueKey":"oneOf.3.value","typeLabel":"number"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.3.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.3.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.3.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.3.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.3.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.3.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.3.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.3.calls","typeLabel":"object[]"},"outcome":{"not":{},"description":"Must be absent: a computed result is a number, with no outcome.","x-moonbounce-absent":true,"uniqueKey":"oneOf.3.outcome","typeLabel":"any"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.3.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.3.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.3","typeLabel":"object"},{"type":"object","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status","outcome"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.4.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.4.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.4.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.4.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.4.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.4.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.4.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.4.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.4.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.4.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.4.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.4.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.4.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.4.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.4.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.4.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.4.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.4.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.4.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.4.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.4.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.4.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.4.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.4.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.4.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.4.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.4.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.4.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.4.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.4.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.4.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.4.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.4.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.4.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.cost","typeLabel":"object"},"status":{"type":"string","enum":["decided"],"isRequired":true,"uniqueKey":"oneOf.4.status","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","isRequired":true,"uniqueKey":"oneOf.4.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.4.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.4.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.4.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.4.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.4.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.4.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.4.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.4.calls","typeLabel":"object[]"},"value":{"type":"number","uniqueKey":"oneOf.4.value","typeLabel":"number"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.4.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.4.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.4","typeLabel":"object"},{"type":"object","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"oneOf.5.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"oneOf.5.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.5.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"oneOf.5.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.5.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"oneOf.5.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"oneOf.5.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.5.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.5.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.5.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"oneOf.5.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"oneOf.5.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.5.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.5.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"oneOf.5.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.5.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"oneOf.5.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.5.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.5.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.5.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.5.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"oneOf.5.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"oneOf.5.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"oneOf.5.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"oneOf.5.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.5.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.5.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.5.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.5.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"oneOf.5.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"oneOf.5.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"oneOf.5.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.5.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.5.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.cost","typeLabel":"object"},"status":{"type":"string","enum":["abstained"],"isRequired":true,"uniqueKey":"oneOf.5.status","typeLabel":"enum\u003cstring>"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"oneOf.5.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.5.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.5.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"oneOf.5.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"oneOf.5.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.5.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"oneOf.5.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.5.calls","typeLabel":"object[]"},"value":{"not":{},"description":"Must be absent: an abstained result has no value.","x-moonbounce-absent":true,"uniqueKey":"oneOf.5.value","typeLabel":"any"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"oneOf.5.outcome","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"oneOf.5.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"oneOf.5.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.5","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"environment":"production","id":"\u003cstring>","answers":{},"aggregations":{},"moonbounce":{"decision_id":"\u003cstring>","item_id":"\u003cstring>","structure_hash":"\u003cstring>","metadata":{},"summary":"\u003cstring>"},"version":{"structure_hash":"\u003cstring>","binding":2,"engine_profile":"\u003cstring>"},"engines":{},"usage":{"input_tokens":123,"output_tokens":123},"status":"computed","value":123,"dry_run":"\u003cunknown>","via":"\u003cstring>","cost":{"engine_calls":1,"cache_hits":1,"input_tokens":1,"usd_micros":1},"calls":[{"questions":["\u003cstring>"],"reads":["state.message"],"input_tokens":1}],"outcome":"\u003cunknown>","missing":["questions.asks_for_refund"]}}},"exampleType":"generated"}},"exampleType":"generated"},"ca154c5a-e5be-4564-995f-5171587894dd":{"description":"The run","headers":{"Idempotent-Replayed":{"schema":{"type":"string","enum":["true"],"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."},"required":false,"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."}},"content":{"application/json":{"schema":{"type":"object","properties":{"run_id":{"type":"string","pattern":"^evr_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Pass it to loss_report; kept until `expires_at`. A stored run's evaluations stay after it expires.","isRequired":true,"uniqueKey":"run_id","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"dry_run":{"type":"boolean","description":"Whether the items were dry runs (nothing stored) or stored as evaluations.","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"decision_id","typeLabel":"string"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"version.structure_hash","typeLabel":"string"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"version.engine_profile","typeLabel":"string"},"binding":{"type":"integer","minimum":0,"description":"The binding revision; 0 when the deployment default applies (none was set).","isRequired":true,"uniqueKey":"version.binding","typeLabel":"integer"}},"required":["structure_hash","engine_profile","binding"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"version","typeLabel":"object"},"counts":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"counts.total","typeLabel":"integer"},"decided":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"counts.decided","typeLabel":"integer"},"computed":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"counts.computed","typeLabel":"integer"},"abstained":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"counts.abstained","typeLabel":"integer"},"failed":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"counts.failed","typeLabel":"integer"},"labeled":{"type":"integer","minimum":0,"description":"Items that carried `expected`.","isRequired":true,"uniqueKey":"counts.labeled","typeLabel":"integer"}},"required":["total","decided","computed","abstained","failed","labeled"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"counts","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"cost","typeLabel":"object"},"results":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"The item's id; a stored case's `evaluation_id`.","isRequired":true,"uniqueKey":"results.items.[INDEX].item_id","typeLabel":"string"},"status":{"type":"string","enum":["decided","computed","abstained","failed"],"isRequired":true,"uniqueKey":"results.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"evaluation_id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"A stored case: the evaluation replayed.","uniqueKey":"results.items.[INDEX].evaluation_id","typeLabel":"string"},"id":{"type":"string","description":"The item's evaluation id, as one evaluate gives it: `evl_` when stored, `dry_` on a dry run (it names only the usage). Absent on a failed item.","uniqueKey":"results.items.[INDEX].id","typeLabel":"string"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].outcome","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].value","typeLabel":"number"},"via":{"type":"string","uniqueKey":"results.items.[INDEX].via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","uniqueKey":"results.items.[INDEX].missing.items.[INDEX]","typeLabel":"string"},"description":"Questions on the result's path with no answer.","uniqueKey":"results.items.[INDEX].missing","typeLabel":"string[]"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"number","uniqueKey":"results.items.[INDEX].answers.additionalProperties.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"results.items.[INDEX].answers.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].answers.additionalProperties","typeLabel":"number | null"},"description":"With `include: [\"answers\"]`.","uniqueKey":"results.items.[INDEX].answers","typeLabel":"object"},"attributes":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":200,"uniqueKey":"results.items.[INDEX].attributes.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].attributes.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].attributes.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"results.items.[INDEX].attributes.additionalProperties","typeLabel":"string | number | boolean"},"description":"With `include: [\"attributes\"]`, when the decision keeps content (absent when its `store_state` is false).","uniqueKey":"results.items.[INDEX].attributes","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"What this item's engines cost (money): on a failed item, what its engines spent before failing; absent when none ran.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].cost","typeLabel":"object"},"evaluation":{"oneOf":[{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status","value"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.usage","typeLabel":"object"},"status":{"type":"string","enum":["computed"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.status","typeLabel":"enum\u003cstring>"},"value":{"type":"number","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.value","typeLabel":"number"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.calls","typeLabel":"object[]"},"outcome":{"not":{},"description":"Must be absent: a computed result is a number, with no outcome.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.outcome","typeLabel":"any"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.0.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.0","typeLabel":"object"},{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status","outcome"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.usage","typeLabel":"object"},"status":{"type":"string","enum":["decided"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.status","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.outcome","typeLabel":"string"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.calls","typeLabel":"object[]"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.value","typeLabel":"number"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.1.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.1","typeLabel":"object"},{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","answers","aggregations","moonbounce","version","engines","usage","status"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.id","typeLabel":"string"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.usage","typeLabel":"object"},"status":{"type":"string","enum":["abstained"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.status","typeLabel":"enum\u003cstring>"},"dry_run":{"not":{},"description":"Must be absent: only a dry run sets `dry_run`.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.dry_run","typeLabel":"any"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.via","typeLabel":"string"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"description":"Always present on fresh responses; absent only on an idempotent replay of a response stored before costs were reported.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.cost","typeLabel":"object"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.calls","typeLabel":"object[]"},"value":{"not":{},"description":"Must be absent: an abstained result has no value.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.value","typeLabel":"any"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.outcome","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.2.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.2","typeLabel":"object"},{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status","value"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.cost","typeLabel":"object"},"status":{"type":"string","enum":["computed"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.status","typeLabel":"enum\u003cstring>"},"value":{"type":"number","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.value","typeLabel":"number"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.calls","typeLabel":"object[]"},"outcome":{"not":{},"description":"Must be absent: a computed result is a number, with no outcome.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.outcome","typeLabel":"any"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.3.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.3","typeLabel":"object"},{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status","outcome"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.cost","typeLabel":"object"},"status":{"type":"string","enum":["decided"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.status","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.calls","typeLabel":"object[]"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.value","typeLabel":"number"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.4.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.4","typeLabel":"object"},{"type":"object","description":"With `include: [\"evaluation\"]`: what evaluate returns for this item on its own (absent on a failed item).","required":["environment","id","dry_run","answers","aggregations","moonbounce","version","engines","usage","cost","status"],"x-moonbounce-sdk-known-fields":true,"properties":{"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.environment","typeLabel":"enum\u003cstring>"},"id":{"type":"string","pattern":"^dry_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.id","typeLabel":"string"},"dry_run":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.dry_run","typeLabel":"enum\u003cboolean>"},"answers":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"P(true), or why there is no answer.","required":["type","noul"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.0.type","typeLabel":"enum\u003cstring>"},"noul":{"type":"number","minimum":0,"maximum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.0.noul","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","abstained"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.1.type","typeLabel":"enum\u003cstring>"},"abstained":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.1.abstained","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.1","typeLabel":"object"},{"type":"object","description":"P(true), or why there is no answer.","required":["type","failed"],"x-moonbounce-sdk-known-fields":true,"properties":{"type":{"type":"string","enum":["noul"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.2.type","typeLabel":"enum\u003cstring>"},"failed":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.2.failed","typeLabel":"enum\u003cboolean>"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties.oneOf.2","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers.additionalProperties","typeLabel":"object"},"description":"Each question's answer, as System One returns it.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.answers","typeLabel":"object"},"aggregations":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.type","typeLabel":"string"},"value":{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.value","typeLabel":"number"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.outcome","typeLabel":"string"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.via","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.missing.items.[INDEX]","typeLabel":"string"},"description":"weighted_mean only: the inputs dropped for having no answer, as written (`questions.x`).","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.missing","typeLabel":"string[]"},"abstained":{"type":"boolean","enum":[true],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties.abstained","typeLabel":"enum\u003cboolean>"}},"required":["type"],"additionalProperties":true,"description":"An aggregation's value. `value` for numbers (for bands, the input it cut); `outcome` for bands, rules and match; `via` is the zero-based rule index, `cases.\u003clabel>` for a matched case, or `else` for the fallback; `abstained` when unknown.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.item_id","typeLabel":"string"},"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.structure_hash","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","maxLength":512,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Caller key-values, stored with the evaluation and never shown to the model. Keys starting `mb.` are reserved for Moonbounce provenance: `mb.commit`, `mb.branch`, `mb.service` and `mb.release`, which say where a call came from.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.metadata","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce.summary","typeLabel":"string"}},"required":["decision_id","item_id","structure_hash"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.moonbounce","typeLabel":"object"},"version":{"type":"object","properties":{"structure_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.version.structure_hash","typeLabel":"string"},"binding":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.version.binding","typeLabel":"integer"},"engine_profile":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.version.engine_profile","typeLabel":"string"}},"required":["structure_hash","binding","engine_profile"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.version","typeLabel":"object"},"engines":{"type":"object","additionalProperties":{"type":"object","properties":{"engine":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties.engine","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties.model","typeLabel":"string"},"resolved_model":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties.resolved_model","typeLabel":"string"},"adapter":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties.adapter","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties.cached","typeLabel":"boolean"}},"required":["engine","model","resolved_model","adapter","cached"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.engines","typeLabel":"object"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.usage.output_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.usage","typeLabel":"object"},"cost":{"type":"object","properties":{"engine_calls":{"type":"integer","minimum":0,"description":"On evaluate and import_examples, upstream engine calls reported in usage, including retries; one call can answer several features (Jev compiles them). On previews, features sent to engines, not upstream calls.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.cost.engine_calls","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Feature answers reused from cache. Only previews use the cache today; evaluate and import_examples report 0.","isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.cost.cache_hits","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.cost.input_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.cost.usd_micros","typeLabel":"integer"}},"required":["engine_calls","cache_hits","input_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.cost","typeLabel":"object"},"status":{"type":"string","enum":["abstained"],"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.status","typeLabel":"enum\u003cstring>"},"via":{"type":"string","description":"A zero-based rule index, `cases.\u003clabel>` for an exact matched case, or `else` for the fallback.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.via","typeLabel":"string"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX].questions","typeLabel":"string[]"},"reads":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256,"description":"`state.\u003ckey>` or a nested object path such as `state.order.customer.tier`: keys of an object `state`. A key has no `.`, `[` or `]`. Array indexes are not supported yet.","examples":["state.message","state.order.order_total_usd"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX].reads.items.[INDEX]","typeLabel":"string"},"description":"The paths sent, as the questions wrote them (`state.message`); absent when the whole state was.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX].input_tokens","typeLabel":"integer"}},"required":["questions"],"additionalProperties":true,"description":"One upstream System One call.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.calls","typeLabel":"object[]"},"value":{"not":{},"description":"Must be absent: an abstained result has no value.","x-moonbounce-absent":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.value","typeLabel":"any"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"An outcome name, or the exact enum label when a string attribute is the result.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.outcome","typeLabel":"string"},"missing":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.missing.items.[INDEX]","typeLabel":"string"},"description":"The questions the result depends on (through `result` and every aggregation on its path) that have no answer, abstained or failed, as `questions.x` paths in authored question order. Absent when none is missing; reported for every status. A caller who must not act on partial evidence checks that it is absent, for example `status === \"decided\" \u0026\u0026 !missing`.","uniqueKey":"results.items.[INDEX].evaluation.oneOf.5.missing","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"results.items.[INDEX].evaluation.oneOf.5","typeLabel":"object"}],"uniqueKey":"results.items.[INDEX].evaluation","typeLabel":"object"},"error":{"type":"object","properties":{"code":{"type":"string","description":"The reason, such as `ENGINE_FAILED`, `ENGINE_UNAVAILABLE` or `NOT_STARTED`.","isRequired":true,"uniqueKey":"results.items.[INDEX].error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"results.items.[INDEX].error.message","typeLabel":"string"},"retryable":{"type":"boolean","description":"Sending the item again may work.","isRequired":true,"uniqueKey":"results.items.[INDEX].error.retryable","typeLabel":"boolean"}},"required":["code","message","retryable"],"additionalProperties":true,"description":"Why it failed; only with status `failed`.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX].error","typeLabel":"object"}},"required":["item_id","status"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"results.items.[INDEX]","typeLabel":"object"},"description":"One per item, in item order (cases: newest label first).","isRequired":true,"uniqueKey":"results","typeLabel":"object[]"},"cases":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"description":"Cases that match the filters, across every page; with `evaluation_ids`, those found.","isRequired":true,"uniqueKey":"cases.total","typeLabel":"integer"},"excluded":{"type":"object","properties":{"withdrawn":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.withdrawn","typeLabel":"integer"},"retired":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.retired","typeLabel":"integer"},"excluded":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.excluded","typeLabel":"integer"},"contested":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.contested","typeLabel":"integer"},"no_consensus":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.no_consensus","typeLabel":"integer"},"no_outcome":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.no_outcome","typeLabel":"integer"},"outcome_not_in_result":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.outcome_not_in_result","typeLabel":"integer"},"no_deciding_ballot":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.no_deciding_ballot","typeLabel":"integer"},"attribute_inputs_unavailable":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.attribute_inputs_unavailable","typeLabel":"integer"},"no_split":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.no_split","typeLabel":"integer"},"duplicate_group":{"type":"integer","minimum":1,"uniqueKey":"cases.excluded.duplicate_group","typeLabel":"integer"}},"description":"Evaluations with feedback that are not cases, by reason: `withdrawn` (all feedback withdrawn), `retired` (feedback older than the last policy change), `excluded` (flagged input_broken), `contested` (reviewers disagree), `no_consensus` (no feedback that decides an outcome), `no_outcome` (feedback rules outcomes out without naming one), `outcome_not_in_result` (expected outcome not in `outcomes`), `no_deciding_ballot`, `attribute_inputs_unavailable` (stored before attribute inputs were kept, with a default that can't be read back), `no_split` (not yet in a split group), `duplicate_group` (another evaluation of the same item group counts instead).","isRequired":true,"uniqueKey":"cases.excluded","typeLabel":"object"},"next_cursor":{"oneOf":[{"type":"string","description":"Pass back in `cases.cursor` for the next page.","isRequired":true,"uniqueKey":"cases.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Pass back in `cases.cursor` for the next page.","isRequired":true,"uniqueKey":"cases.next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cases.next_cursor","typeLabel":"string | null"}},"required":["total","excluded","next_cursor"],"additionalProperties":true,"description":"With `cases`: which cases the run took.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"cases","typeLabel":"object"}},"required":["run_id","expires_at","dry_run","environment","decision_id","version","counts","cost","results"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"run_id":"\u003cstring>","expires_at":"2023-11-07T05:31:56Z","dry_run":true,"environment":"production","decision_id":"\u003cstring>","version":{"structure_hash":"\u003cstring>","engine_profile":"\u003cstring>","binding":1},"counts":{"total":1,"decided":1,"computed":1,"abstained":1,"failed":1,"labeled":1},"cost":{"engine_calls":1,"cache_hits":1,"input_tokens":1,"usd_micros":1},"results":[{"item_id":"\u003cstring>","status":"decided","evaluation_id":"\u003cstring>","id":"\u003cstring>","outcome":"\u003cstring>","value":123,"via":"\u003cstring>","missing":["\u003cstring>"],"answers":{},"attributes":{},"cost":{"engine_calls":1,"cache_hits":1,"input_tokens":1,"usd_micros":1},"evaluation":{"environment":"production","id":"\u003cstring>","answers":{},"aggregations":{},"moonbounce":{"decision_id":"\u003cstring>","item_id":"\u003cstring>","structure_hash":"\u003cstring>","metadata":{},"summary":"\u003cstring>"},"version":{"structure_hash":"\u003cstring>","binding":2,"engine_profile":"\u003cstring>"},"engines":{},"usage":{"input_tokens":123,"output_tokens":123},"status":"computed","value":123,"dry_run":"\u003cunknown>","via":"\u003cstring>","cost":{"engine_calls":1,"cache_hits":1,"input_tokens":1,"usd_micros":1},"calls":[{"questions":["\u003cstring>"],"reads":["state.message"],"input_tokens":1}],"outcome":"\u003cunknown>","missing":["questions.asks_for_refund"]},"error":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true}}],"cases":{"total":1,"excluded":{"withdrawn":2,"retired":2,"excluded":2,"contested":2,"no_consensus":2,"no_outcome":2,"outcome_not_in_result":2,"no_deciding_ballot":2,"attribute_inputs_unavailable":2,"no_split":2,"duplicate_group":2},"next_cursor":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"85d055ee-8ad9-4c6e-96c9-0e6215904553":{"description":"Invalid request: `param` names the field at fault when one applies","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"eba79381-2429-46ef-b327-63aeba234451":{"description":"Missing or invalid API key (reason KEY_INVALID)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"19dbccab-f73f-4fea-bd2b-23cd8541d266":{"description":"The key may not do this","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"4efdcd87-5d19-4f22-ab3f-641c20febb25":{"description":"Not found, or not in this key's organization and environment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"05ceea80-557a-4e34-89db-76f26d98d2d1":{"description":"Conflict with the current state","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"d39b8725-295b-46f5-93d5-5f7e2ba84e0c":{"description":"The Idempotency-Key's first result was deleted, so it cannot be replayed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"9bffa7fa-2214-458d-a456-17e5850ab3e7":{"description":"The HTTP body exceeds 1 MB (reason BODY_TOO_LARGE)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"f548a6db-e5b6-4110-aaf6-ec581997fa1f":{"description":"The request is well formed but cannot be processed (IDEMPOTENCY_KEY_REUSED requires a fresh key; REQUEST_TOO_LARGE requires a smaller request)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"5e7a6887-e8e4-47a3-b309-2ee52b9d6fd6":{"description":"RATE_LIMITED: retry after Retry-After seconds; QUOTA_EXCEEDED: details.reset_at gives the daily reset time (no Retry-After)","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying, when waiting helps."},"required":false,"description":"Seconds to wait before retrying, when waiting helps."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"8a4b96bb-2195-4cf4-8dc1-b41fc6ffce74":{"description":"An engine failed to answer a question the result needs (type engine_failed, reason ENGINE_FAILED)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"d3c86878-0fe7-469e-9908-bc515e4887e3":{"description":"Temporarily unavailable, with Retry-After (for example reason AUTH_UNAVAILABLE, ENGINE_UNAVAILABLE or STORE_UNAVAILABLE): retry with the same Idempotency-Key","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying, when waiting helps."},"required":true,"description":"Seconds to wait before retrying, when waiting helps."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission_denied","not_found","conflict","rate_limited","engine_failed","unavailable","internal"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"For people; don't parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Set where a caller can act on it, one of the reasons in the ErrorReason schema. New reasons may be added: treat an unknown one by the status and `type`.","uniqueKey":"error.reason","typeLabel":"string"},"param":{"type":"string","description":"The request field at fault, as a dotted path (`attribute_values.region`, `claims.1.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","properties":{"issues":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].param","typeLabel":"string"},"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]+$","description":"Stable, extensible issue code; unknown codes still have a parameter and human-readable message.","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.details.issues.items.[INDEX].message","typeLabel":"string"}},"required":["param","code","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"error.details.issues.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details.issues","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["type","message"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","message":"\u003cstring>","reason":"\u003cstring>","param":"\u003cstring>","details":{"issues":[{"param":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>"}]}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"24f6b0c7-c663-497f-83de-05d4a0735c68":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","scopes":["decisions:evaluate"],"schemeName":"bearerAuth"}}},"servers":{"5199a294-99c0-440b-a171-e6a2ae5671e1":{"url":"https://api.moonbounce.ai","description":"Production"}},"schemas":{"6889a875-9eb8-44b0-9d08-9fefa389dc6e":{"oneOf":[{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"A feature's path: `questions.\u003cname>`, `attributes.\u003cname>` or `aggregations.\u003cname>`.","examples":["questions.asks_for_refund","aggregations.band"],"isRequired":true},"gte":{"type":"number"},"gt":{"type":"number"},"lte":{"type":"number"},"lt":{"type":"number"},"is":{"type":"string","minLength":1,"maxLength":200},"in":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":255},"abstained":{"type":"boolean","enum":[true]}},"additionalProperties":false},{"type":"object","required":["all"],"properties":{"all":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true}},"additionalProperties":false},{"type":"object","required":["any"],"properties":{"any":{"type":"array","items":{"$circularRef":"6889a875-9eb8-44b0-9d08-9fefa389dc6e"},"minItems":1,"maxItems":64,"isRequired":true}},"additionalProperties":false},{"type":"object","required":["not"],"properties":{"not":{"oneOf":[{"isRequired":true}],"isRequired":true}},"additionalProperties":false}]}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","scopes":["decisions:evaluate"],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key, sent as `Authorization: Bearer \u003ckey>`. Each operation lists the scope its key needs: `decisions:evaluate` (evaluate and read evaluations), `decisions:feedback` (your app's feedback) or `decisions:develop` (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"moonbounce","siteName":"Moonbounce Decisions API","title":"Evaluate an item, or run a version over many items - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T00:56:41.225Z","originalFileLocation":"api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item\u0026#x27;s state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation\u0026#x27;s value and the result\u0026#x27;s status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One\u0026#x27;s POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision\u0026#x27;s bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment\u0026#x27;s default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait= shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run\u0026#x27;s evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item\u0026#x27;s label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item\u0026#x27;s content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.. An item whose engines fail is that item\u0026#x27;s result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run\u0026#x27;s evaluations stay after it expires. include adds each result\u0026#x27;s answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item\u0026#x27;s engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content\u0026#x27;s own failure is not. A run has its own 60 s budget (Prefer: wait doesn\u0026#x27;t apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision\u0026#x27;s labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases\u0026#x27; filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn\u0026#x27;t changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case\u0026#x27;s evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case\u0026#x27;s stored content.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Evaluate an item, or run a version over many items - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item\u0026#x27;s state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation\u0026#x27;s value and the result\u0026#x27;s status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One\u0026#x27;s POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision\u0026#x27;s bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment\u0026#x27;s default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait= shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run\u0026#x27;s evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item\u0026#x27;s label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item\u0026#x27;s content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.. An item whose engines fail is that item\u0026#x27;s result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run\u0026#x27;s evaluations stay after it expires. include adds each result\u0026#x27;s answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item\u0026#x27;s engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content\u0026#x27;s own failure is not. A run has its own 60 s budget (Prefer: wait doesn\u0026#x27;t apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision\u0026#x27;s labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases\u0026#x27; filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn\u0026#x27;t changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case\u0026#x27;s evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case\u0026#x27;s stored content.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=evaluate\u0026amp;title=Evaluate+an+item%2C+or+run+a+version+over+many+items\u0026amp;description=Two+shapes.+**One+item**+%28%60state%60%2C+%60moonbounce.item_id%60%29.+**A+run**+%28%60items%60%2C+or+%60cases%60%29%3A+up+to+200+items+under+one+version%2C+each+exactly+as+one+call+would+be%2C\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=b814a5917a7931032370b05f202f1c45d4d7870235059edb8c06e608b23aa4cd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Evaluate an item, or run a version over many items - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item\u0026#x27;s state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation\u0026#x27;s value and the result\u0026#x27;s status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One\u0026#x27;s POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision\u0026#x27;s bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment\u0026#x27;s default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait= shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run\u0026#x27;s evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item\u0026#x27;s label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item\u0026#x27;s content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.. An item whose engines fail is that item\u0026#x27;s result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run\u0026#x27;s evaluations stay after it expires. include adds each result\u0026#x27;s answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item\u0026#x27;s engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content\u0026#x27;s own failure is not. A run has its own 60 s budget (Prefer: wait doesn\u0026#x27;t apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision\u0026#x27;s labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases\u0026#x27; filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn\u0026#x27;t changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case\u0026#x27;s evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case\u0026#x27;s stored content.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=evaluate\u0026amp;title=Evaluate+an+item%2C+or+run+a+version+over+many+items\u0026amp;description=Two+shapes.+**One+item**+%28%60state%60%2C+%60moonbounce.item_id%60%29.+**A+run**+%28%60items%60%2C+or+%60cases%60%29%3A+up+to+200+items+under+one+version%2C+each+exactly+as+one+call+would+be%2C\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=b814a5917a7931032370b05f202f1c45d4d7870235059edb8c06e608b23aa4cd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/moonbounce/Pq6Jhs_BrzDTLcf2/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D5AB5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.moonbounce.ai/#organization\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://docs.moonbounce.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=367a5dedb5799a16c5737d136af68dc5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.moonbounce.ai#website\",\"name\":\"Moonbounce Decisions API\",\"url\":\"https://docs.moonbounce.ai\",\"publisher\":{\"@id\":\"https://docs.moonbounce.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items#webpage\",\"url\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items\",\"name\":\"Evaluate an item, or run a version over many items\",\"description\":\"Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item's state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation's value and the result's status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One's POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision's bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment's default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait= shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run's evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item's label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item's content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.. An item whose engines fail is that item's result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run's evaluations stay after it expires. include adds each result's answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item's engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content's own failure is not. A run has its own 60 s budget (Prefer: wait doesn't apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision's labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases' filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn't changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case's evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case's stored content.\",\"dateModified\":\"2026-11-06T00:56:41.225Z\",\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.moonbounce.ai/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Evaluate an item, or run a version over many items\",\"item\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items#apireference\",\"headline\":\"Evaluate an item, or run a version over many items\",\"name\":\"Evaluate an item, or run a version over many items\",\"description\":\"Two shapes. One item (state, moonbounce.item_id). A run (items, or cases): up to 200 items under one version, each exactly as one call would be, with a run_id for loss_report (described at the end). Evaluates one item against a decision: answers each question over the item's state (each question sees only the values its reads paths name, such as state.message or state.order.customer.tier, nested as in the state), evaluates the aggregations, and returns every answer, every aggregation's value and the result's status, value and outcome. The structure travels inline (questions, attributes, aggregations, result) or by hash in moonbounce.structure_hash, never both. The request is a superset of System One's POST /v1/systemone: a plain System One request plus a result and the moonbounce object is a valid call. model asserts the decision's bound model rather than choosing one (see model); choose the engine with POST /v1/decisions/{decision_id}/binding/revisions (the MCP tool set_binding). A decision gets its first binding in an environment, to the deployment's default engine, the first time a structure is registered for the decision there: by POST /v1/decisions/{decision_id}/structures (the MCP tool register_structure), or by any evaluate or import_examples call that is not a dry run in an environment that has no binding yet, inline or by hash. A call refused for its model or for an engine the binding cannot use registers no structure and creates no binding, and neither does an inline structure whose content is refused. Questions are for judgments a model makes; facts your app already knows, such as an order total or a refund count, belong in attributes and are compared exactly by rules conditions (gte, lt, is, in). Spends engine calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call. Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and refuses Idempotency-Key. It does not register an inline structure, create a binding or cache answers. Otherwise an inline structure is registered on first sight and the response follows the evaluation commit. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header. Each request has a 10 s budget; Prefer: wait= shortens it. A run: send items in place of state (each {item_id, state, attribute_values?, expected?, label_source?}, item_id unique in the run), the structure inline as for one item or by moonbounce.structure_hash, and moonbounce.decision_id. Each item is evaluated exactly as it would be on its own: stored as an evaluation, or with moonbounce.dry_run: true a dry run that stores only usage; each result carries its id (evl_ or dry_). Score versions with dry runs: a stored run's evaluations are real traffic. expected (an outcome) and label_source (human, synthetic or unknown) are the item's label, kept with the run for loss_report, never used to evaluate and never recorded as feedback. Every item's content is checked before any engine call: content the structure refuses is 400 CONTENT_INVALID naming items.. An item whose engines fail is that item's result (status failed, with an error whose code says why and retryable whether sending it again may help); the call fails only on an invalid request, auth, admission or a store error. The run is kept until expires_at: pass its run_id to loss_report to judge it, so the results never pass through your context; a stored run's evaluations stay after it expires. include adds each result's answers, attributes, or evaluation (everything one evaluate returns for that item). Each item that succeeded is billed as one evaluate or dry run would be; a failed item's engine spend is recorded and shown as its cost (money). An outage of any kind (unavailable, rate limited, timeout, auth) is retryable; only the content's own failure is not. A run has its own 60 s budget (Prefer: wait doesn't apply) and takes no model; items it could not start fail with NOT_STARTED, and a case it ran out of time for with ENGINE_UNAVAILABLE (both retryable): send them in a new run with a new Idempotency-Key. A run answers 201, and its Idempotency-Key replays the first response without spending again. Stored cases: send cases in place of items to evaluate the decision's labeled cases (the ones list_cases lists): {evaluation_ids}, or list_cases' filters (outcomes, structure_hash, label_source, since, until) with limit (default 200) and cursor (cases.next_cursor from the previous run). They are always dry runs: each case is replayed as a preview replays it, reusing the answer it stored for a question that hasn't changed (same engine and model) and asking the rest; refresh names questions to ask afresh. Each result carries the case's evaluation_id, and the run keeps its label, label source and answer corrections, so a preview equals a case run under the base (refreshing the questions the candidate changed or dropped), one under the candidate, and loss_report over the two, when both runs set cases.outcomes to the outcomes either version can produce and cover the same cases (a preview judges the newest 500: page both runs through them while no label changes; a page is not a snapshot), and both versions can read every case's stored content.\",\"url\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items#webpage\"},\"dateModified\":\"2026-11-06T00:56:41.225Z\",\"publisher\":{\"@id\":\"https://docs.moonbounce.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Moonbounce Decisions API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Moonbounce Decisions API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference overview","href":"/reference/overview"}]},{"group":"Endpoints","pages":[{"group":"health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/health/health-check"}]},{"group":"structures","pages":[{"title":"Validate and hash a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/structures/hash","href":"/api-reference/structures/validate-and-hash-a-decision-structure"},{"title":"List registered structures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/list-registered-structures"},{"title":"Register a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/register-a-decision-structure"},{"title":"Get a registered structure","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures/{structure_hash}","href":"/api-reference/structures/get-a-registered-structure"},{"title":"List decisions in this environment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions","href":"/api-reference/structures/list-decisions-in-this-environment"}]},{"group":"engines","pages":[{"title":"List the engines a decision can run on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/engines","href":"/api-reference/engines/list-the-engines-a-decision-can-run-on"},{"title":"Get the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/binding","href":"/api-reference/engines/get-the-engine-a-decision-runs-on"},{"title":"Choose the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/binding/revisions","href":"/api-reference/engines/choose-the-engine-a-decision-runs-on"}]},{"group":"objective","pages":[{"title":"Judge results under a decision's objective","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/loss-reports","href":"/api-reference/objective/judge-results-under-a-decisions-objective"},{"title":"Get what a decision optimizes for","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/objective","href":"/api-reference/objective/get-what-a-decision-optimizes-for"},{"title":"Set what a decision optimizes for","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/objective/revisions","href":"/api-reference/objective/set-what-a-decision-optimizes-for"}]},{"group":"feedback","pages":[{"title":"List a decision's labeled cases","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/cases","href":"/api-reference/feedback/list-a-decisions-labeled-cases"},{"title":"Submit feedback on evaluations or items","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/feedback","href":"/api-reference/feedback/submit-feedback-on-evaluations-or-items"},{"title":"Get a feedback submission as stored","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/feedback/{feedback_id}","href":"/api-reference/feedback/get-a-feedback-submission-as-stored"},{"title":"Export a decision's feedback as training data","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/feedback","href":"/api-reference/feedback/export-a-decisions-feedback-as-training-data"},{"title":"Import labeled examples","description":"Imports labeled examples: evaluate over the examples as a stored run, each stored as an example (`assignment_mode` `example`), and each example's labels recorded as feedback (source `import`), in one transaction, so an example is never stored without its labels. It spends engine calls, so previews and suggestions can replay the examples with their answers. Send the structure inline (`questions`, `attributes`, `aggregations`, `result`; registered on first sight, as evaluate does) or a registered structure's hash in `structure_hash`. Each example has its `item_id`, `state`, optional `attribute_values`, `summary` and `metadata`, its labels in `claims` (expected_answer and expected_outcome claims, at least one of either, checked as submit_feedback checks them; a verdict is refused), and `label_source`: `human`, `synthetic` (an agent wrote the label) or `unknown` (the default). Only `human` labels count toward the no-new-severe-mistake rule, and among near-identical items a label ranks owner > reviewer > `human` > `unknown` > `synthetic`. Up to 200 examples per call. Before any engine call every example is checked: content the structure refuses is 400 CONTENT_INVALID (`param` `examples.\u003ci>.state.\u003ckey>` or `examples.\u003ci>.attribute_values.\u003cname>`), and claims are checked (`examples.\u003ci>.claims.\u003cj>`). The response is the run's (201): `run_id`, and per example its result, its evaluation `id` and its `feedback_id`. An example that failed stored nothing: it comes back failed with `error.retryable`; send it again in a new call with a new Idempotency-Key. Pass `run_id` to loss_report to see how the version agrees with the labels. The request has a 60 s budget, the commit included; examples it could not start fail with `NOT_STARTED`. A replay with the same Idempotency-Key returns the first result with the Idempotent-Replayed header and calls no engine.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/examples","href":"/api-reference/feedback/import-labeled-examples"}]},{"group":"evaluate","pages":[{"title":"Evaluate an item, or run a version over many items","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items"},{"title":"Get a past evaluation","description":"Reads only. Returns an evaluation of this organization and the key's environment, including assignment_mode and content: {state, attribute_values?} when inputs were stored, or content: null when they were not (store_state: false). A submitted JSON null is content: {state: null}; another environment's evaluation is 404, so a test key never reads production traffic. The web app (WebApi) may not read evaluations (403): a blind spot-check card carries the id.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/evaluations/{evaluation_id}","href":"/api-reference/evaluate/get-a-past-evaluation"},{"title":"List a decision's evaluations","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/evaluations","href":"/api-reference/evaluate/list-a-decisions-evaluations"}]},{"group":"review","pages":[{"title":"Fill the review queue","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/fill","href":"/api-reference/review/fill-the-review-queue"},{"title":"List review items","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items","href":"/api-reference/review/list-review-items"},{"title":"Get a review item","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{review_item_id}","href":"/api-reference/review/get-a-review-item"},{"title":"Get the structure a review item was decided with","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{review_item_id}/configuration","href":"/api-reference/review/get-the-structure-a-review-item-was-decided-with"},{"title":"Mark a review item as shown","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/shown","href":"/api-reference/review/mark-a-review-item-as-shown"},{"title":"Submit a review","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/submit","href":"/api-reference/review/submit-a-review"},{"title":"Withdraw a review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/withdraw","href":"/api-reference/review/withdraw-a-review-answer"},{"title":"Change your own earlier review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/change","href":"/api-reference/review/change-your-own-earlier-review-answer"},{"title":"Skip a review item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/skip","href":"/api-reference/review/skip-a-review-item"},{"title":"Add the reason for a blind disagreement","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/reason","href":"/api-reference/review/add-the-reason-for-a-blind-disagreement"}]},{"group":"suggestions","pages":[{"title":"List suggestions for a decision","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/list-suggestions-for-a-decision"},{"title":"Generate a suggestion on demand","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/generate-a-suggestion-on-demand"},{"title":"Get a suggestion","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/suggestions/{suggestion_id}","href":"/api-reference/suggestions/get-a-suggestion"},{"title":"Mark a suggestion pulled or rejected","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/suggestions/{suggestion_id}/status","href":"/api-reference/suggestions/mark-a-suggestion-pulled-or-rejected"},{"title":"Preview a structure change against past feedback","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/previews","href":"/api-reference/suggestions/preview-a-structure-change-against-past-feedback"},{"title":"Get the improvement loop's status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/loop","href":"/api-reference/suggestions/get-the-improvement-loops-status"}]},{"group":"usage","pages":[{"title":"Get a decision's engine cost, per evaluation and in total","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/usage","href":"/api-reference/usage/get-a-decisions-engine-cost-per-evaluation-and-in-total"}]},{"group":"keys","pages":[{"title":"Identify the calling key or sign-in","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/whoami","href":"/api-reference/keys/identify-the-calling-key-or-sign-in"}]}]}]}]},"basePath":"","title":"Evaluate an item, or run a version over many items - Moonbounce Decisions API","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-B2eHeXx_.js","dist-Dt1IougW.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-DptzKFCt.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","AssistantPageLink-CZ6Wt2Vb.js"]}