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, with version (the structure that ran: its hash, and its number once registered) and model (the setting’s model id, what answered, the setting’s revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment’s default model, stored as the setting’s revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.
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 model setting picks the model (set it with PUT /v1/decisions/{decision_id}/model). Leave it out to use the setting. When sent, every question's model must be this one, or the call is a 400 invalid_request with parammodel, before any model call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the setting it would store) 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; decisions and their versions belong to the whole organization.
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/XgvwJtU0Z2TC5k2H/logo/symbol-light.svg?fit=max\u0026auto=format\u0026n=XgvwJtU0Z2TC5k2H\u0026q=85\u0026s=cd361cb434cc5cabaa2240471ebc780a","dark":"https://mintcdn.com/moonbounce/XgvwJtU0Z2TC5k2H/logo/symbol-dark.svg?fit=max\u0026auto=format\u0026n=XgvwJtU0Z2TC5k2H\u0026q=85\u0026s=30d3353b4d3a5756ecfadd153e271d89"},"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"},"entitlements":{},"buildId":"6aee998bf28062a6e44b0f51","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API reference","count":42},{"language":"default","tag":"Endpoints","count":41},{"language":"default","tag":"Guides","count":15},{"language":"default","tag":"review","count":10},{"language":"default","tag":"decisions","count":6},{"language":"default","tag":"suggestions","count":6},{"language":"default","tag":"feedback","count":5},{"language":"default","tag":"evaluate","count":4},{"language":"default","tag":"objective","count":4},{"language":"default","tag":"Get started","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":"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":"editor-metadata","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","slug":"/api-reference/evaluate/evaluate-an-item","pageMetadata":{"title":"Evaluate an item","description":"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, with `version` (the structure that ran: its hash, and its number once registered) and `model` (the setting's model id, what answered, the setting's revision and an opaque profile). Many items under one version are a run: `POST /v1/decisions/{decision_id}/runs` (the MCP tool `create_run`). 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 model rather than choosing one (see `model`); choose the model with `PUT /v1/decisions/{decision_id}/model` (the MCP tool `set_model`). In an environment where nobody chose one, a decision runs on the deployment's default model, stored as the setting's revision 1 the first time a version is registered there: by `POST /v1/decisions` (the MCP tool `register_decision`), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its `model` or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (`cost.calls` lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so `version.number` is null for a structure nobody registered), store a model setting 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 body with `items` or `cases` is a 400 that points at the runs endpoint.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item","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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"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, with \", _jsx(_components.code, {\n children: \"version\"\n }), \" (the structure that ran: its hash, and its number once registered) and \", _jsx(_components.code, {\n children: \"model\"\n }), \" (the setting’s model id, what answered, the setting’s revision and an opaque profile). Many items under one version are a run: \", _jsx(_components.code, {\n children: \"POST /v1/decisions/{decision_id}/runs\"\n }), \" (the MCP tool \", _jsx(_components.code, {\n children: \"create_run\"\n }), \"). 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 model rather than choosing one (see \", _jsx(_components.code, {\n children: \"model\"\n }), \"); choose the model with \", _jsx(_components.code, {\n children: \"PUT /v1/decisions/{decision_id}/model\"\n }), \" (the MCP tool \", _jsx(_components.code, {\n children: \"set_model\"\n }), \"). In an environment where nobody chose one, a decision runs on the deployment’s default model, stored as the setting’s revision 1 the first time a version is registered there: by \", _jsx(_components.code, {\n children: \"POST /v1/decisions\"\n }), \" (the MCP tool \", _jsx(_components.code, {\n children: \"register_decision\"\n }), \"), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its \", _jsx(_components.code, {\n children: \"model\"\n }), \" or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (\", _jsx(_components.code, {\n children: \"cost.calls\"\n }), \" lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so \", _jsx(_components.code, {\n children: \"version.number\"\n }), \" is null for a structure nobody registered), store a model setting 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. A body with \", _jsx(_components.code, {\n children: \"items\"\n }), \" or \", _jsx(_components.code, {\n children: \"cases\"\n }), \" is a 400 that points at the runs endpoint.\"]\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","description":"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, with `version` (the structure that ran: its hash, and its number once registered) and `model` (the setting's model id, what answered, the setting's revision and an opaque profile). Many items under one version are a run: `POST /v1/decisions/{decision_id}/runs` (the MCP tool `create_run`). 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 model rather than choosing one (see `model`); choose the model with `PUT /v1/decisions/{decision_id}/model` (the MCP tool `set_model`). In an environment where nobody chose one, a decision runs on the deployment's default model, stored as the setting's revision 1 the first time a version is registered there: by `POST /v1/decisions` (the MCP tool `register_decision`), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its `model` or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (`cost.calls` lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so `version.number` is null for a structure nobody registered), store a model setting 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 body with `items` or `cases` is a 400 that points at the runs endpoint.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item","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":["ffb2c577-24a5-4760-8c04-92764f0c100d"],"summary":"Evaluate an item","description":"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, with `version` (the structure that ran: its hash, and its number once registered) and `model` (the setting's model id, what answered, the setting's revision and an opaque profile). Many items under one version are a run: `POST /v1/decisions/{decision_id}/runs` (the MCP tool `create_run`). 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 model rather than choosing one (see `model`); choose the model with `PUT /v1/decisions/{decision_id}/model` (the MCP tool `set_model`). In an environment where nobody chose one, a decision runs on the deployment's default model, stored as the setting's revision 1 the first time a version is registered there: by `POST /v1/decisions` (the MCP tool `register_decision`), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its `model` or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (`cost.calls` lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so `version.number` is null for a structure nobody registered), store a model setting 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 body with `items` or `cases` is a 400 that points at the runs endpoint.","parameters":["b2259abc-ba6f-4770-9540-fe658c747be9","eb6cae37-b8bd-4464-9d6f-409a747ea0de"],"requestBody":"b70db8d6-f49e-4606-aaa4-614cc4452d7c","responses":{"200":"d8f1975a-b2fe-454f-b671-c339b5ed198a","400":"43817d53-76bc-4028-9435-43b888e1e7c1","401":"3f85506b-9120-4d33-bc3f-7ca73696687c","403":"af96a022-21bd-4f9d-8ca6-95e220dcfbd4","404":"20ca6986-390f-4f4a-94de-4d684af68e20","409":"cb573750-22fa-4799-9679-73d77e68c326","410":"40d909da-edb6-40cc-9e01-76bfc85746be","413":"c5fef159-f2e0-4f90-92a2-11ab6b20121b","422":"4e418053-0763-40b6-b3a7-372b9ff1f7c2","429":"aeabac61-f037-4ce0-af2d-1be69a7595d9","502":"9fa45fa2-2fe4-4843-be4a-bf2919c6b05d","503":"1fde906b-4718-4011-95ee-6081355fc31b"},"method":"post","type":"path","servers":["862a956d-1c4f-4606-bdd8-1be7c77f4c78"],"path":"/v1/evaluate","baseUrlOptions":["https://api.moonbounce.ai"],"title":"Evaluate an item","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"b2259abc-ba6f-4770-9540-fe658c747be9":{"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"},"eb6cae37-b8bd-4464-9d6f-409a747ea0de":{"schema":{"type":"string","maxLength":256,"description":"`wait=\u003cseconds>` (RFC 7240) shortens the 10 s budget.","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"`wait=\u003cseconds>` (RFC 7240) shortens the 10 s budget.","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}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"A name you choose for the thing being judged, such as a ticket id: 1 to 256 characters. Evaluations of the same item group under it, and 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 model calls and stores only usage, with no evaluation or feedback target. It registers nothing, so `version.number` is null for a structure nobody registered. An Idempotency-Key is accepted and ignored: a retried dry run runs, and is billed, again.","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":"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5"},"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":"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5"},"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":"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5","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 model setting picks the model (set it with `PUT /v1/decisions/{decision_id}/model`). Leave it out to use the setting. When sent, every question's model must be this one, or the call is a 400 invalid_request with `param` `model`, before any model call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the setting it would store) 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}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","minLength":1,"maxLength":256,"description":"A name you choose for the thing being judged, such as a ticket id: 1 to 256 characters. Evaluations of the same item group under it, and 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 model calls and stores only usage, with no evaluation or feedback target. It registers nothing, so `version.number` is null for a structure nobody registered. An Idempotency-Key is accepted and ignored: a retried dry run runs, and is billed, again.","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 model setting picks the model (set it with `PUT /v1/decisions/{decision_id}/model`). Leave it out to use the setting. When sent, every question's model must be this one, or the call is a 400 invalid_request with `param` `model`, before any model call and before anything is written: a refused call registers nothing (not even an inline structure seen for the first time, or the setting it would store) 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"}],"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"d8f1975a-b2fe-454f-b671-c339b5ed198a":{"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":{"examples":{"stored":{"title":"stored","value":{"environment":"production","id":"evl_0199f2c4-1a2b-7c3d-8e4f-5a6b7c8d9e0f","answers":{"item_used":{"type":"noul","noul":0.35},"defective":{"type":"noul","noul":0.05}},"aggregations":{"grant_score":{"type":"weighted_mean","value":0.35000000000000003},"handling":{"type":"rules","outcome":"escalate","via":"0"}},"status":"decided","outcome":"escalate","moonbounce":{"decision_id":"refund-exception","item_id":"t-001","summary":"Late tent, used once, day 39"},"version":{"structure_hash":"sha256:bdad6e5b1b879209305f1555b43ec62666a4d74a925280c66e54cc4dc07bb1ae","number":1},"model":{"id":"jev-1.14.0","resolved_model":"jev-1.14.0","revision":1,"profile":"defective=jev:jev-1.14.0@jev@0.1.0,item_used=jev:jev-1.14.0@jev@0.1.0"},"cost":{"model_calls":1,"questions":2,"input_tokens":520,"output_tokens":4,"usd_micros":21,"calls":[{"questions":["item_used","defective"],"reads":["state.message"],"input_tokens":520}]}}},"dry_run":{"title":"dry_run","value":{"environment":"production","id":"dry_0199f2c4-1a2b-7c3d-8e4f-5a6b7c8d9e10","answers":{"item_used":{"type":"noul","noul":0.35},"defective":{"type":"noul","noul":0.05}},"aggregations":{"grant_score":{"type":"weighted_mean","value":0.35000000000000003},"handling":{"type":"rules","outcome":"escalate","via":"0"}},"status":"decided","outcome":"escalate","moonbounce":{"decision_id":"refund-exception","item_id":"t-001","summary":"Late tent, used once, day 39"},"version":{"structure_hash":"sha256:bdad6e5b1b879209305f1555b43ec62666a4d74a925280c66e54cc4dc07bb1ae","number":null},"model":{"id":"jev-1.14.0","resolved_model":"jev-1.14.0","revision":null,"profile":"defective=jev:jev-1.14.0@jev@0.1.0,item_used=jev:jev-1.14.0@jev@0.1.0"},"cost":{"model_calls":1,"questions":2,"input_tokens":520,"output_tokens":4,"usd_micros":21,"calls":[{"questions":["item_used","defective"],"reads":["state.message"],"input_tokens":520}]},"dry_run":true}}},"schema":{"oneOf":[{"type":"object","required":["environment","id","answers","aggregations","moonbounce","version","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.0.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.0.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.0.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.0.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.0.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.0.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.0.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.0.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.0.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.0.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.0.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.0.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.0.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.0.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.0.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.0.cost","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"},"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","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.1.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.1.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.1.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.1.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.1.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.1.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.1.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.1.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.1.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.1.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.1.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.1.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.1.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.1.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.1.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.1.cost","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"},"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","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.2.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.2.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.2.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.2.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.2.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.2.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.2.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.2.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.2.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.2.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.2.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.2.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.2.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.2.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.2.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.2.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.2.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.2.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.2.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.2.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.2.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_tokens","usd_micros"],"additionalProperties":true,"x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.2.cost","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"},"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","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.3.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.3.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.3.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.3.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.3.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.3.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.3.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.3.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.3.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.3.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.3.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.3.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.3.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.3.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.3.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.3.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.3.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.3.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.3.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.3.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.3.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.3.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_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"},"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","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.4.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.4.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.4.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.4.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.4.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.4.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.4.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.4.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.4.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.4.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.4.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.4.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.4.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.4.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.4.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.4.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.4.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.4.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.4.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.4.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.4.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.4.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.4.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_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"},"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","model","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; decisions and their versions belong to the whole organization.","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"},"description":"Every aggregation's result. The result's own aggregation carries `via` when it is bands, rules or match.","isRequired":true,"uniqueKey":"oneOf.5.aggregations","typeLabel":"object"},"moonbounce":{"type":"object","properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","description":"A name you choose for this decision, such as `refund-exception`: a lowercase letter, then up to 127 of `a-z 0-9 _ . -`. Unique in your organization and shared by its test and production keys. The first registration or evaluation under a new one creates the decision.","isRequired":true,"uniqueKey":"oneOf.5.moonbounce.decision_id","typeLabel":"string"},"item_id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.5.moonbounce.item_id","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"],"additionalProperties":true,"description":"What you sent in `moonbounce`, echoed. What ran is in `version` and `model`.","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"},"number":{"oneOf":[{"type":"integer","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.5.version.number.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The version's number under the decision (1, 2, 3...). Null when the structure isn't registered: a dry run or a preview of a structure nobody registered. The hash is the identity.","isRequired":true,"uniqueKey":"oneOf.5.version.number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.5.version.number","typeLabel":"integer | null"}},"required":["structure_hash","number"],"additionalProperties":true,"description":"The version that ran.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.version","typeLabel":"object"},"model":{"type":"object","properties":{"id":{"type":"string","description":"The model the decision's setting names, as `GET .../model` reports it and `PUT .../model` takes it.","isRequired":true,"uniqueKey":"oneOf.5.model.id","typeLabel":"string"},"resolved_model":{"type":"string","description":"The versioned model that answered.","isRequired":true,"uniqueKey":"oneOf.5.model.resolved_model","typeLabel":"string"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.5.model.revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The model setting's revision it ran on. Null when no setting was stored in the environment, so the deployment default applied.","isRequired":true,"uniqueKey":"oneOf.5.model.revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.5.model.revision","typeLabel":"integer | null"},"profile":{"type":"string","description":"Every question's model and connector, as one opaque string. Compare it for equality (two runs are comparable when their profiles match); don't parse it.","isRequired":true,"uniqueKey":"oneOf.5.model.profile","typeLabel":"string"}},"required":["id","resolved_model","revision","profile"],"additionalProperties":true,"description":"The model that answered.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"oneOf.5.model","typeLabel":"object"},"cost":{"type":"object","properties":{"model_calls":{"type":"integer","minimum":0,"description":"Upstream model calls, retries included. One call can answer several questions (Jev compiles them into one).","isRequired":true,"uniqueKey":"oneOf.5.cost.model_calls","typeLabel":"integer"},"questions":{"type":"integer","minimum":0,"description":"Questions sent to a model. An answer from the cache, or one a stored case kept, is not counted.","isRequired":true,"uniqueKey":"oneOf.5.cost.questions","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.5.cost.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.5.cost.output_tokens","typeLabel":"integer"},"usd_micros":{"type":"integer","minimum":0,"description":"What the model calls cost, in millionths of a US dollar.","isRequired":true,"uniqueKey":"oneOf.5.cost.usd_micros","typeLabel":"integer"},"cache_hits":{"type":"integer","minimum":0,"description":"Questions answered from the answer cache, when any were: previews and case runs always report it, evaluate and imports only when the cache served an answer.","uniqueKey":"oneOf.5.cost.cache_hits","typeLabel":"integer"},"calls":{"type":"array","items":{"type":"object","properties":{"questions":{"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$","uniqueKey":"oneOf.5.cost.calls.items.[INDEX].questions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.5.cost.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.cost.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.cost.calls.items.[INDEX].reads","typeLabel":"string[]"},"input_tokens":{"type":"integer","minimum":0,"uniqueKey":"oneOf.5.cost.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.cost.calls.items.[INDEX]","typeLabel":"object"},"description":"Each upstream call: which questions it answered and what it read.","uniqueKey":"oneOf.5.cost.calls","typeLabel":"object[]"}},"required":["model_calls","questions","input_tokens","output_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>"},"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"},"exampleType":"examples"}},"exampleType":"examples"},"43817d53-76bc-4028-9435-43b888e1e7c1":{"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"},"3f85506b-9120-4d33-bc3f-7ca73696687c":{"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"},"af96a022-21bd-4f9d-8ca6-95e220dcfbd4":{"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"},"20ca6986-390f-4f4a-94de-4d684af68e20":{"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"},"cb573750-22fa-4799-9679-73d77e68c326":{"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"},"40d909da-edb6-40cc-9e01-76bfc85746be":{"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"},"c5fef159-f2e0-4f90-92a2-11ab6b20121b":{"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"},"4e418053-0763-40b6-b3a7-372b9ff1f7c2":{"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"},"aeabac61-f037-4ce0-af2d-1be69a7595d9":{"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"},"9fa45fa2-2fe4-4843-be4a-bf2919c6b05d":{"description":"A model 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"},"1fde906b-4718-4011-95ee-6081355fc31b":{"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":{"ffb2c577-24a5-4760-8c04-92764f0c100d":{"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":{"862a956d-1c4f-4606-bdd8-1be7c77f4c78":{"url":"https://api.moonbounce.ai","description":"Production"}},"schemas":{"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5":{"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":"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5"},"minItems":1,"maxItems":64,"isRequired":true}},"additionalProperties":false},{"type":"object","required":["any"],"properties":{"any":{"type":"array","items":{"$circularRef":"4e65f53b-8a8f-4b39-920f-0a2e061b4ad5"},"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 - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T03:22:57.232Z","originalFileLocation":"api-reference/evaluate/evaluate-an-item.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=\"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, with version (the structure that ran: its hash, and its number once registered) and model (the setting\u0026#x27;s model id, what answered, the setting\u0026#x27;s revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment\u0026#x27;s default model, stored as the setting\u0026#x27;s revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.\">\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 - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"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, with version (the structure that ran: its hash, and its number once registered) and model (the setting\u0026#x27;s model id, what answered, the setting\u0026#x27;s revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment\u0026#x27;s default model, stored as the setting\u0026#x27;s revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.\">\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\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moonbounce.mintlify.site/_mintlify/api/og/v2?division=evaluate\u0026amp;title=Evaluate+an+item\u0026amp;description=Evaluates+one+item+against+a+decision%3A+answers+each+question+over+the+item%27s+%60state%60+%28each+question+sees+only+the+values+its+%60reads%60+paths+name%2C+such+as+%60state.\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=6c14efdb63921f18db6a82a1a14d7f5f7bc5c1f6b668286399a6e30051b70e38\">\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 - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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, with version (the structure that ran: its hash, and its number once registered) and model (the setting\u0026#x27;s model id, what answered, the setting\u0026#x27;s revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment\u0026#x27;s default model, stored as the setting\u0026#x27;s revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.site/_mintlify/api/og/v2?division=evaluate\u0026amp;title=Evaluate+an+item\u0026amp;description=Evaluates+one+item+against+a+decision%3A+answers+each+question+over+the+item%27s+%60state%60+%28each+question+sees+only+the+values+its+%60reads%60+paths+name%2C+such+as+%60state.\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=6c14efdb63921f18db6a82a1a14d7f5f7bc5c1f6b668286399a6e30051b70e38\">\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\">\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.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#webpage\",\"url\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item\",\"name\":\"Evaluate an item\",\"description\":\"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, with version (the structure that ran: its hash, and its number once registered) and model (the setting's model id, what answered, the setting's revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment's default model, stored as the setting's revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.\",\"dateModified\":\"2026-11-07T03:22:57.232Z\",\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.moonbounce.ai/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"evaluate\",\"item\":\"https://docs.moonbounce.ai/api-reference/evaluate/run-a-version-over-many-items\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Evaluate an item\",\"item\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item#apireference\",\"headline\":\"Evaluate an item\",\"name\":\"Evaluate an item\",\"description\":\"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, with version (the structure that ran: its hash, and its number once registered) and model (the setting's model id, what answered, the setting's revision and an opaque profile). Many items under one version are a run: POST /v1/decisions/{decision_id}/runs (the MCP tool create_run). 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 model rather than choosing one (see model); choose the model with PUT /v1/decisions/{decision_id}/model (the MCP tool set_model). In an environment where nobody chose one, a decision runs on the deployment's default model, stored as the setting's revision 1 the first time a version is registered there: by POST /v1/decisions (the MCP tool register_decision), or by any evaluate, run or import_examples call that is not a dry run, inline or by hash. A call refused for its model or for a question the model cannot answer registers no version and stores no setting, 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 model calls and, with moonbounce.dry_run: true, stores no evaluation; otherwise stores an evaluation. Questions with the same reads share one System One call (cost.calls lists each). Fresh responses include recorded cost. A dry run stores only usage, returns a dry_ id and dry_run: true, and accepts and ignores Idempotency-Key: a retried dry run runs, and is billed, again. It does not register an inline structure (so version.number is null for a structure nobody registered), store a model setting 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 body with items or cases is a 400 that points at the runs endpoint.\",\"url\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/evaluate/evaluate-an-item#webpage\"},\"dateModified\":\"2026-11-07T03:22:57.232Z\",\"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":"decisions","pages":[{"title":"Validate a decision file","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/validate","href":"/api-reference/decisions/validate-a-decision-file"},{"title":"List decisions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions","href":"/api-reference/decisions/list-decisions"},{"title":"Register a decision's version","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions","href":"/api-reference/decisions/register-a-decisions-version"},{"title":"Get a version","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/versions/{ref}","href":"/api-reference/decisions/get-a-version"},{"title":"Get a decision","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}","href":"/api-reference/decisions/get-a-decision"},{"title":"List a decision's versions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/versions","href":"/api-reference/decisions/list-a-decisions-versions"}]},{"group":"models","pages":[{"title":"List the models a decision can run on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/models","href":"/api-reference/models/list-the-models-a-decision-can-run-on"},{"title":"Get the model a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/model","href":"/api-reference/models/get-the-model-a-decision-runs-on"},{"title":"Choose the model a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/decisions/{decision_id}/model","href":"/api-reference/models/choose-the-model-a-decision-runs-on"}]},{"group":"evaluate","pages":[{"title":"Run a version over many items","description":"Evaluates up to 200 items under one version, each exactly as one evaluate would, and keeps the results under a `run_id` for loss_report and sweep_cut. The body is flat, as import_examples' is: the structure inline (`questions`, `attributes`, `aggregations`, `result`) or a registered one's `structure_hash`, never both; then `items` or `cases`, `dry_run` and `include`. The decision is the path's. **Items:** each `{item_id, state, attribute_values?, expected?, label_source?}`, `item_id` unique in the run. Each is stored as an evaluation, or with `dry_run: true` is 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 model call: content the structure refuses is 400 CONTENT_INVALID naming `items.\u003ci>`. An item whose model calls 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. An outage of any kind (unavailable, rate limited, timeout, auth) is `retryable`; only the content's own failure is not. **Stored cases:** send `cases` in place of `items` to evaluate the decision's labeled cases (the ones list_cases lists; this needs the `decisions:develop` scope): `{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 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. The run reports `version` and `model` as evaluate does. It 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, and it can't be read back by id. `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 spend is recorded and shown as its `cost`. A run has a 60 s budget 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. 201 with the run; an Idempotency-Key replays the first response without spending again.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/runs","href":"/api-reference/evaluate/run-a-version-over-many-items"},{"title":"Evaluate an item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item"},{"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":"objective","pages":[{"title":"Sweep a cut over a run's answers","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/cut-sweeps","href":"/api-reference/objective/sweep-a-cut-over-a-runs-answers"},{"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 put /v1/decisions/{decision_id}/objective","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","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/examples","href":"/api-reference/feedback/import-labeled-examples"}]},{"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 model 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-model-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 - Moonbounce Decisions API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","AssistantPageLink-9EK5IAXV.js"]}