Stores the decision file’s objective as a new revision for the calling key’s environment, so previews and optimizers judge changes by it (a preview’s loss_report, and whether a candidate is accepted). Push it whenever the file’s objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset’s mix doesn’t change the score. There are no limits on an outcome’s share, recall or precision: an objective with limits is refused. {"objective": null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision’s most recently registered structure (in any environment) can’t produce. 404 when the decision doesn’t exist (register a structure first). An Idempotency-Key covers the body as sent.
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 environment of the key that made the call: production or test. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.
Outcomes the objective names that the decision's most recently registered structure can't produce. Their entries will be left out of scoring; check for a typo or a renamed outcome. Empty when that structure's result is a value, with no outcomes to check against.
False when the body matched the current revision, so nothing was written.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Moonbounce Decisions API","colors":{"primary":"#1D5AB5","light":"#74A8F0","dark":"#478EF0"},"logo":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=367a5dedb5799a16c5737d136af68dc5","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/lockup-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=3b3e891bc9f1e5b26bee272f878ecd4f","href":"https://moonbounce.ai"},"favicon":{"light":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-light.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=78644bdbff4fda3f026238ea5135e647","dark":"https://mintcdn.com/moonbounce/mWuXGW-nUJSEdABp/logo/symbol-dark.svg?fit=max\u0026auto=format\u0026n=mWuXGW-nUJSEdABp\u0026q=85\u0026s=946e0ccec72a87a3d707728e895639e1"},"background":{"color":{"light":"#FFFEEE","dark":"#000000"}},"navbar":{"primary":{"type":"button","label":"Request access","href":"https://app.moonbounce.ai"}},"banner":{"content":"Looking for the Clavata policy and labeling API? Those docs are at [docs.clavata.ai](https://docs.clavata.ai). You are on the docs for the Moonbounce decisions platform.","dismissible":true,"type":"info","color":{"light":"#1D5AB5","dark":"#1D5AB5"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moonbounce","hasAudioNarration":false,"actualSubdomain":"moonbounce","customDomains":["docs.moonbounce.ai"],"gitSource":{"type":"github","owner":"clavataai","repo":"decisions-platform","deployBranch":"main","contentDirectory":"docs/site","isPrivate":true,"mountPath":"","label":"","_id":"6ae8f7a905e268646b31d443"},"chroma":{"latestBuiltDeploymentHistoryId":"6aeca9a037327199c83cec33","collectionId":"e9c425b7-eb17-41bc-adf6-390226fcaa59","liveDeploymentHistoryId":"6aeca9a037327199c83cec33","schemaVersion":"v3"},"entitlements":{},"buildId":"6aed2b7f7f86d585254780fd","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API reference","count":39},{"language":"default","tag":"Endpoints","count":38},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"review","count":10},{"language":"default","tag":"suggestions","count":6},{"language":"default","tag":"feedback","count":5},{"language":"default","tag":"structures","count":5},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Build a decision","count":3},{"language":"default","tag":"Improve a decision","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"brand.css","content":":root{--mb-font-sans: \"Helvetica Neue\", Helvetica, Arial, sans-serif;--mb-font-mono: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace;--mb-rule: rgb(225, 230, 240);--mb-rule-strong: rgb(134, 134, 134)}.dark{--mb-rule: rgb(68, 69, 74);--mb-rule-strong: rgb(134, 134, 134)}body{font-family:var(--mb-font-sans)}h1,h2,h3,h4,h5,h6{font-family:var(--mb-font-sans);font-weight:600;letter-spacing:-0.011em}#page-title{letter-spacing:-0.03em;line-height:1.05}code,pre,kbd,samp{font-family:var(--mb-font-mono)}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(0, 0, 0);border-radius:999px}#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,#navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"]>span.absolute{background:rgb(255, 254, 238)}.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] .text-white,.dark #navbar a[target=\"_blank\"][href=\"https://app.moonbounce.ai\"] svg{color:rgb(0, 0, 0)}.card,.callout,.code-block,.accordion,table{border-radius:0;box-shadow:none}.card{border:1px solid var(--mb-rule)}.card:hover{border-color:var(--mb-rule-strong)}"}],"page":{"pagePath":"api-reference/objective/set-what-a-decision-optimizes-for","slug":"/api-reference/objective/set-what-a-decision-optimizes-for","pageMetadata":{"title":"Set what a decision optimizes for","description":"Stores the decision file's `objective` as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's `loss_report`, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. `mistakes` set a loss per mistake by severity (`minor` 0.5, `normal` 1, `costly` 3, `severe` 10) or directly (`loss`), and an unlisted mistake is `normal`; `fallback` makes sending a case to the safe outcome `minor`; `target` is the loss per case that is good enough; `outcome` with `priority` is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with `limits` is refused. `{\"objective\": null}` clears it, back to balanced losses. The objective is not part of the structure and never changes `structure_hash`. 201 with the new revision; 200 and no new revision when the body matches the current one. `unknown_outcomes` lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/objective/revisions","href":"/api-reference/objective/set-what-a-decision-optimizes-for","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: [\"Stores the decision file’s \", _jsx(_components.code, {\n children: \"objective\"\n }), \" as a new revision for the calling key’s environment, so previews and optimizers judge changes by it (a preview’s \", _jsx(_components.code, {\n children: \"loss_report\"\n }), \", and whether a candidate is accepted). Push it whenever the file’s objective changes; each environment keeps its own. \", _jsx(_components.code, {\n children: \"mistakes\"\n }), \" set a loss per mistake by severity (\", _jsx(_components.code, {\n children: \"minor\"\n }), \" 0.5, \", _jsx(_components.code, {\n children: \"normal\"\n }), \" 1, \", _jsx(_components.code, {\n children: \"costly\"\n }), \" 3, \", _jsx(_components.code, {\n children: \"severe\"\n }), \" 10) or directly (\", _jsx(_components.code, {\n children: \"loss\"\n }), \"), and an unlisted mistake is \", _jsx(_components.code, {\n children: \"normal\"\n }), \"; \", _jsx(_components.code, {\n children: \"fallback\"\n }), \" makes sending a case to the safe outcome \", _jsx(_components.code, {\n children: \"minor\"\n }), \"; \", _jsx(_components.code, {\n children: \"target\"\n }), \" is the loss per case that is good enough; \", _jsx(_components.code, {\n children: \"outcome\"\n }), \" with \", _jsx(_components.code, {\n children: \"priority\"\n }), \" is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset’s mix doesn’t change the score. There are no limits on an outcome’s share, recall or precision: an objective with \", _jsx(_components.code, {\n children: \"limits\"\n }), \" is refused. \", _jsx(_components.code, {\n children: \"{\\\"objective\\\": null}\"\n }), \" clears it, back to balanced losses. The objective is not part of the structure and never changes \", _jsx(_components.code, {\n children: \"structure_hash\"\n }), \". 201 with the new revision; 200 and no new revision when the body matches the current one. \", _jsx(_components.code, {\n children: \"unknown_outcomes\"\n }), \" lists outcomes the decision’s most recently registered structure (in any environment) can’t produce. 404 when the decision doesn’t exist (register a structure first). An Idempotency-Key covers the body as sent.\"]\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":"Set what a decision optimizes for","description":"Stores the decision file's `objective` as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's `loss_report`, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. `mistakes` set a loss per mistake by severity (`minor` 0.5, `normal` 1, `costly` 3, `severe` 10) or directly (`loss`), and an unlisted mistake is `normal`; `fallback` makes sending a case to the safe outcome `minor`; `target` is the loss per case that is good enough; `outcome` with `priority` is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with `limits` is refused. `{\"objective\": null}` clears it, back to balanced losses. The objective is not part of the structure and never changes `structure_hash`. 201 with the new revision; 200 and no new revision when the body matches the current one. `unknown_outcomes` lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/objective/revisions","href":"/api-reference/objective/set-what-a-decision-optimizes-for","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"setObjective","x-mcp-annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"tags":["objective"],"security":["a621f84f-cf66-43d0-832c-4dcb06953cbd"],"summary":"Set what a decision optimizes for","description":"Stores the decision file's `objective` as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's `loss_report`, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. `mistakes` set a loss per mistake by severity (`minor` 0.5, `normal` 1, `costly` 3, `severe` 10) or directly (`loss`), and an unlisted mistake is `normal`; `fallback` makes sending a case to the safe outcome `minor`; `target` is the loss per case that is good enough; `outcome` with `priority` is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with `limits` is refused. `{\"objective\": null}` clears it, back to balanced losses. The objective is not part of the structure and never changes `structure_hash`. 201 with the new revision; 200 and no new revision when the body matches the current one. `unknown_outcomes` lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.","parameters":["26c24810-50fa-48b7-a118-0ab408f736dc","b0c5c943-f5d6-4f6f-a4f2-c136fe9b1247"],"requestBody":"c7b2d615-f8e5-4f5b-b43d-528d55f1044d","responses":{"200":"9e49dfe8-0c22-4380-9105-908f6da440c8","201":"d616157c-7a8e-49e2-9142-ba11ae9619f7","400":"d0aa6d97-3054-40ec-a147-8d8529ac3c35","401":"31884359-48b9-48e0-8f59-bbdd4133e125","403":"c6475775-0769-4994-b280-383fd348fa58","404":"aa0c91ad-f614-473b-ba52-aa8f675a748c","410":"2ab45ee3-cb34-47e8-b18d-83368b5a032c","413":"5ae1b25e-d1be-4047-a586-fae2e60141e9","422":"ff616564-31bb-4b7e-bf85-5fc6566944a6","429":"0d16317b-c8d7-45b3-80ba-20d228d7d001","503":"4801319f-65b0-4ead-974a-0e0fc896631d"},"method":"post","type":"path","servers":["5199a294-99c0-440b-a171-e6a2ae5671e1"],"path":"/v1/decisions/{decision_id}/objective/revisions","baseUrlOptions":["https://api.moonbounce.ai"],"title":"Set what a decision optimizes for","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"26c24810-50fa-48b7-a118-0ab408f736dc":{"schema":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"decision_id","in":"path"},"b0c5c943-f5d6-4f6f-a4f2-c136fe9b1247":{"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"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"objective":{"oneOf":[{"type":"object","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed.","uniqueKey":"objective.oneOf.0.fallback","typeLabel":"string"},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.got","typeLabel":"string"},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.severity","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.got","typeLabel":"string"},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.loss","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX]","typeLabel":"object"},"maxItems":400,"uniqueKey":"objective.oneOf.0.mistakes","typeLabel":"object[]"},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough.","isRequired":true,"uniqueKey":"objective.oneOf.0.target.max_loss_per_case","typeLabel":"number"}},"required":["max_loss_per_case"],"additionalProperties":false,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","uniqueKey":"objective.oneOf.0.target","typeLabel":"object"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about.","uniqueKey":"objective.oneOf.0.outcome","typeLabel":"string"},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it.","uniqueKey":"objective.oneOf.0.priority","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"description":"The decision file's `objective`, as written there. Null clears it, back to balanced losses.","isRequired":true,"uniqueKey":"objective.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed."},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10."}},"additionalProperties":false},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe."}},"additionalProperties":false}]},"maxItems":400},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough."}},"required":["max_loss_per_case"],"additionalProperties":false,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides."},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about."},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it."}},"additionalProperties":false,"description":"The decision file's `objective`, as written there. Null clears it, back to balanced losses.","isRequired":true,"uniqueKey":"objective.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective","typeLabel":"object | null"}},"required":["objective"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"objective":{"fallback":"\u003cstring>","mistakes":[{"expected":"\u003cstring>","got":"\u003cstring>"}],"outcome":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9e49dfe8-0c22-4380-9105-908f6da440c8":{"description":"Unchanged: the body matches the current revision","headers":{"Idempotent-Replayed":{"schema":{"type":"string","enum":["true"],"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."},"required":false,"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."}},"content":{"application/json":{"schema":{"type":"object","required":["created","decision_id","environment","revision","objective","objective_hash","unknown_outcomes","created_at"],"properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"decision_id","typeLabel":"string"},"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"revision","typeLabel":"integer | null"},"objective":{"oneOf":[{"type":"object","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed.","uniqueKey":"objective.oneOf.0.fallback","typeLabel":"string"},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.got","typeLabel":"string"},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.severity","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.got","typeLabel":"string"},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.loss","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX]","typeLabel":"object"},"maxItems":400,"uniqueKey":"objective.oneOf.0.mistakes","typeLabel":"object[]"},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough.","isRequired":true,"uniqueKey":"objective.oneOf.0.target.max_loss_per_case","typeLabel":"number"}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"objective.oneOf.0.target","typeLabel":"object"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about.","uniqueKey":"objective.oneOf.0.outcome","typeLabel":"string"},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it.","uniqueKey":"objective.oneOf.0.priority","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed."},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10."}},"additionalProperties":true},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe."}},"additionalProperties":true}]},"maxItems":400},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough."}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about."},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it."}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective","typeLabel":"object | null"},"objective_hash":{"oneOf":[{"type":"string","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective_hash","typeLabel":"string | null"},"unknown_outcomes":{"type":"array","items":{"type":"string","uniqueKey":"unknown_outcomes.items.[INDEX]","typeLabel":"string"},"description":"Outcomes the objective names that the decision's most recently registered structure can't produce. Their entries will be left out of scoring; check for a typo or a renamed outcome. Empty when that structure's result is a value, with no outcomes to check against.","isRequired":true,"uniqueKey":"unknown_outcomes","typeLabel":"string[]"},"created_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time> | null"},"created":{"type":"boolean","description":"False when the body matched the current revision, so nothing was written.","isRequired":true,"uniqueKey":"created","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"decision_id":"\u003cstring>","environment":"production","revision":2,"objective":{"fallback":"\u003cstring>","mistakes":[{"expected":"\u003cstring>","got":"\u003cstring>","severity":"minor"}],"target":{"max_loss_per_case":1},"outcome":"\u003cstring>","priority":"catch_all"},"objective_hash":"\u003cstring>","unknown_outcomes":["\u003cstring>"],"created_at":"2023-11-07T05:31:56Z","created":true}}},"exampleType":"generated"}},"exampleType":"generated"},"d616157c-7a8e-49e2-9142-ba11ae9619f7":{"description":"A new revision","headers":{"Idempotent-Replayed":{"schema":{"type":"string","enum":["true"],"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."},"required":false,"description":"Present and `true` when this is the stored result of an earlier request with the same Idempotency-Key."}},"content":{"application/json":{"schema":{"type":"object","required":["created","decision_id","environment","revision","objective","objective_hash","unknown_outcomes","created_at"],"properties":{"decision_id":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,127}$","isRequired":true,"uniqueKey":"decision_id","typeLabel":"string"},"environment":{"type":"string","enum":["production","test"],"description":"The environment of the key that made the call: `production` or `test`. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"revision":{"oneOf":[{"type":"integer","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"description":"The objective revision. Null when none was ever set here, which means balanced losses.","isRequired":true,"uniqueKey":"revision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"revision","typeLabel":"integer | null"},"objective":{"oneOf":[{"type":"object","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed.","uniqueKey":"objective.oneOf.0.fallback","typeLabel":"string"},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.got","typeLabel":"string"},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0.severity","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.expected","typeLabel":"string"},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.got","typeLabel":"string"},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe.","isRequired":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1.loss","typeLabel":"number"}},"additionalProperties":true,"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"objective.oneOf.0.mistakes.items.[INDEX]","typeLabel":"object"},"maxItems":400,"uniqueKey":"objective.oneOf.0.mistakes","typeLabel":"object[]"},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough.","isRequired":true,"uniqueKey":"objective.oneOf.0.target.max_loss_per_case","typeLabel":"number"}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true,"uniqueKey":"objective.oneOf.0.target","typeLabel":"object"},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about.","uniqueKey":"objective.oneOf.0.outcome","typeLabel":"string"},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it.","uniqueKey":"objective.oneOf.0.priority","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"fallback":{"type":"string","minLength":1,"maxLength":200,"description":"The safe outcome. Sending a case there when it belonged elsewhere is `minor`, unless that mistake is listed."},"mistakes":{"type":"array","items":{"oneOf":[{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","severity"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"severity":{"type":"string","enum":["minor","normal","costly","severe"],"description":"How bad a mistake is: `minor` weighs 0.5, `normal` 1, `costly` 3 and `severe` 10."}},"additionalProperties":true},{"type":"object","description":"One mistake that matters, by severity or by a direct loss. A mistake that isn't listed is `normal`.","required":["expected","got","loss"],"x-moonbounce-sdk-known-fields":true,"properties":{"expected":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the case should have had."},"got":{"type":"string","minLength":1,"maxLength":200,"description":"The outcome the decision gave instead."},"loss":{"type":"number","minimum":0,"maximum":1000000,"description":"A direct loss in place of a severity. At least 10 counts as severe."}},"additionalProperties":true}]},"maxItems":400},"target":{"type":"object","properties":{"max_loss_per_case":{"type":"number","minimum":0,"description":"The loss per case at which the decision is good enough."}},"required":["max_loss_per_case"],"additionalProperties":true,"description":"Optional. The refine loop stops when the loss per case reaches it; without one, the owner decides.","x-moonbounce-sdk-known-fields":true},"outcome":{"type":"string","minLength":1,"maxLength":200,"description":"With `priority`: the outcome the two-outcome shortcut is about."},"priority":{"type":"string","enum":["catch_all","be_sure","balanced"],"description":"With `outcome`, the shortcut: `catch_all` makes missing `outcome` costly and a false alarm normal, `be_sure` the reverse, `balanced` both normal. A listed mistake overrides the shortcut's entry for it."}},"additionalProperties":true,"description":"The stored objective. Null means balanced losses: each outcome's mistakes weigh the same in total.","x-moonbounce-sdk-known-fields":true,"isRequired":true,"uniqueKey":"objective.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective","typeLabel":"object | null"},"objective_hash":{"oneOf":[{"type":"string","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.0","typeLabel":"string"},{"type":"null","description":"The objective's hash, as loop status and previews report it. Null with `objective`. Compare it with the decision file's to see drift.","isRequired":true,"uniqueKey":"objective_hash.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"objective_hash","typeLabel":"string | null"},"unknown_outcomes":{"type":"array","items":{"type":"string","uniqueKey":"unknown_outcomes.items.[INDEX]","typeLabel":"string"},"description":"Outcomes the objective names that the decision's most recently registered structure can't produce. Their entries will be left out of scoring; check for a typo or a renamed outcome. Empty when that structure's result is a value, with no outcomes to check against.","isRequired":true,"uniqueKey":"unknown_outcomes","typeLabel":"string[]"},"created_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time> | null"},"created":{"type":"boolean","description":"False when the body matched the current revision, so nothing was written.","isRequired":true,"uniqueKey":"created","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"decision_id":"\u003cstring>","environment":"production","revision":2,"objective":{"fallback":"\u003cstring>","mistakes":[{"expected":"\u003cstring>","got":"\u003cstring>","severity":"minor"}],"target":{"max_loss_per_case":1},"outcome":"\u003cstring>","priority":"catch_all"},"objective_hash":"\u003cstring>","unknown_outcomes":["\u003cstring>"],"created_at":"2023-11-07T05:31:56Z","created":true}}},"exampleType":"generated"}},"exampleType":"generated"},"d0aa6d97-3054-40ec-a147-8d8529ac3c35":{"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"},"31884359-48b9-48e0-8f59-bbdd4133e125":{"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"},"c6475775-0769-4994-b280-383fd348fa58":{"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"},"aa0c91ad-f614-473b-ba52-aa8f675a748c":{"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"},"2ab45ee3-cb34-47e8-b18d-83368b5a032c":{"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"},"5ae1b25e-d1be-4047-a586-fae2e60141e9":{"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"},"ff616564-31bb-4b7e-bf85-5fc6566944a6":{"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"},"0d16317b-c8d7-45b3-80ba-20d228d7d001":{"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"},"4801319f-65b0-4ead-974a-0e0fc896631d":{"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":{"a621f84f-cf66-43d0-832c-4dcb06953cbd":{"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:develop"],"schemeName":"bearerAuth"}}},"servers":{"5199a294-99c0-440b-a171-e6a2ae5671e1":{"url":"https://api.moonbounce.ai","description":"Production"}},"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:develop"],"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":"Set what a decision optimizes for - Moonbounce Decisions API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T00:56:41.208Z","originalFileLocation":"api-reference/objective/set-what-a-decision-optimizes-for.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=\"Stores the decision file\u0026#x27;s objective as a new revision for the calling key\u0026#x27;s environment, so previews and optimizers judge changes by it (a preview\u0026#x27;s loss_report, and whether a candidate is accepted). Push it whenever the file\u0026#x27;s objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset\u0026#x27;s mix doesn\u0026#x27;t change the score. There are no limits on an outcome\u0026#x27;s share, recall or precision: an objective with limits is refused. {\u0026quot;objective\u0026quot;: null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision\u0026#x27;s most recently registered structure (in any environment) can\u0026#x27;t produce. 404 when the decision doesn\u0026#x27;t exist (register a structure first). An Idempotency-Key covers the body as sent.\">\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=\"Set what a decision optimizes for - Moonbounce Decisions API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Stores the decision file\u0026#x27;s objective as a new revision for the calling key\u0026#x27;s environment, so previews and optimizers judge changes by it (a preview\u0026#x27;s loss_report, and whether a candidate is accepted). Push it whenever the file\u0026#x27;s objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset\u0026#x27;s mix doesn\u0026#x27;t change the score. There are no limits on an outcome\u0026#x27;s share, recall or precision: an objective with limits is refused. {\u0026quot;objective\u0026quot;: null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision\u0026#x27;s most recently registered structure (in any environment) can\u0026#x27;t produce. 404 when the decision doesn\u0026#x27;t exist (register a structure first). An Idempotency-Key covers the body as sent.\">\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/objective/set-what-a-decision-optimizes-for\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=objective\u0026amp;title=Set+what+a+decision+optimizes+for\u0026amp;description=Stores+the+decision+file%27s+%60objective%60+as+a+new+revision+for+the+calling+key%27s+environment%2C+so+previews+and+optimizers+judge+changes+by+it+%28a+preview%27s+%60loss_re\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=559e842e624e796f865c08975e5ae80d961d4494bdc641b920fc588493166905\">\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=\"Set what a decision optimizes for - Moonbounce Decisions API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Stores the decision file\u0026#x27;s objective as a new revision for the calling key\u0026#x27;s environment, so previews and optimizers judge changes by it (a preview\u0026#x27;s loss_report, and whether a candidate is accepted). Push it whenever the file\u0026#x27;s objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset\u0026#x27;s mix doesn\u0026#x27;t change the score. There are no limits on an outcome\u0026#x27;s share, recall or precision: an objective with limits is refused. {\u0026quot;objective\u0026quot;: null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision\u0026#x27;s most recently registered structure (in any environment) can\u0026#x27;t produce. 404 when the decision doesn\u0026#x27;t exist (register a structure first). An Idempotency-Key covers the body as sent.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonbounce.mintlify.app/_mintlify/api/og/v2?division=objective\u0026amp;title=Set+what+a+decision+optimizes+for\u0026amp;description=Stores+the+decision+file%27s+%60objective%60+as+a+new+revision+for+the+calling+key%27s+environment%2C+so+previews+and+optimizers+judge+changes+by+it+%28a+preview%27s+%60loss_re\u0026amp;theme=e6d1608244ab860cac0ff47e\u0026amp;signature=559e842e624e796f865c08975e5ae80d961d4494bdc641b920fc588493166905\">\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/objective/set-what-a-decision-optimizes-for\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/objective/set-what-a-decision-optimizes-for.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/objective/set-what-a-decision-optimizes-for#webpage\",\"url\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for\",\"name\":\"Set what a decision optimizes for\",\"description\":\"Stores the decision file's objective as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's loss_report, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with limits is refused. {\\\"objective\\\": null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.\",\"dateModified\":\"2026-11-06T00:56:41.208Z\",\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.moonbounce.ai/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"objective\",\"item\":\"https://docs.moonbounce.ai/api-reference/objective/judge-results-under-a-decisions-objective\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Set what a decision optimizes for\",\"item\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for#apireference\",\"headline\":\"Set what a decision optimizes for\",\"name\":\"Set what a decision optimizes for\",\"description\":\"Stores the decision file's objective as a new revision for the calling key's environment, so previews and optimizers judge changes by it (a preview's loss_report, and whether a candidate is accepted). Push it whenever the file's objective changes; each environment keeps its own. mistakes set a loss per mistake by severity (minor 0.5, normal 1, costly 3, severe 10) or directly (loss), and an unlisted mistake is normal; fallback makes sending a case to the safe outcome minor; target is the loss per case that is good enough; outcome with priority is the two-outcome shortcut. Scores weigh each expected outcome equally however often it occurs among the scored cases, so severities say how bad a mistake is and a dataset's mix doesn't change the score. There are no limits on an outcome's share, recall or precision: an objective with limits is refused. {\\\"objective\\\": null} clears it, back to balanced losses. The objective is not part of the structure and never changes structure_hash. 201 with the new revision; 200 and no new revision when the body matches the current one. unknown_outcomes lists outcomes the decision's most recently registered structure (in any environment) can't produce. 404 when the decision doesn't exist (register a structure first). An Idempotency-Key covers the body as sent.\",\"url\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moonbounce.ai/api-reference/objective/set-what-a-decision-optimizes-for#webpage\"},\"dateModified\":\"2026-11-06T00:56:41.208Z\",\"publisher\":{\"@id\":\"https://docs.moonbounce.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.moonbounce.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Moonbounce Decisions API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Moonbounce Decisions API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference overview","href":"/reference/overview"}]},{"group":"Endpoints","pages":[{"group":"health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/health/health-check"}]},{"group":"structures","pages":[{"title":"Validate and hash a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/structures/hash","href":"/api-reference/structures/validate-and-hash-a-decision-structure"},{"title":"List registered structures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/list-registered-structures"},{"title":"Register a decision structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/structures","href":"/api-reference/structures/register-a-decision-structure"},{"title":"Get a registered structure","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/structures/{structure_hash}","href":"/api-reference/structures/get-a-registered-structure"},{"title":"List decisions in this environment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions","href":"/api-reference/structures/list-decisions-in-this-environment"}]},{"group":"engines","pages":[{"title":"List the engines a decision can run on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/engines","href":"/api-reference/engines/list-the-engines-a-decision-can-run-on"},{"title":"Get the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/binding","href":"/api-reference/engines/get-the-engine-a-decision-runs-on"},{"title":"Choose the engine a decision runs on","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/binding/revisions","href":"/api-reference/engines/choose-the-engine-a-decision-runs-on"}]},{"group":"objective","pages":[{"title":"Judge results under a decision's objective","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/loss-reports","href":"/api-reference/objective/judge-results-under-a-decisions-objective"},{"title":"Get what a decision optimizes for","description":"The decision's current objective revision in the calling key's environment: which mistakes matter and how much, and its target. `revision` and `objective` are null when none was set, which means balanced losses. Previews are judged by it (`loss_report`). Compare `objective_hash` with the decision file's objective to see whether the stored copy is current. 404 when the decision doesn't exist (no structure registered or evaluated).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/objective","href":"/api-reference/objective/get-what-a-decision-optimizes-for"},{"title":"Set what a decision optimizes for","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/objective/revisions","href":"/api-reference/objective/set-what-a-decision-optimizes-for"}]},{"group":"feedback","pages":[{"title":"List a decision's labeled cases","description":"Reads only. The decision's labeled cases in the key's environment, newest label first: the cases a preview replays, one per item group, each with its `evaluation_id`, label (`expected`) and where it came from (`label_source`, `consensus`, `feedback_source`), its split, the version it ran under and what it gave then, the `expected_answer` corrections by question hash, and the reasons people wrote. Evaluations with feedback that are not cases are counted in `excluded`, by reason. Filters: `outcomes` (comma-separated, no spaces, or a JSON array of strings for names that contain a comma; a case whose label is another outcome is excluded as `outcome_not_in_result`, as a preview excludes it). A preview over versions that produce those outcomes replays the newest 500 of that list; it may also keep an evaluation stored before attribute inputs were kept, which this list counts as `attribute_inputs_unavailable`, when its versions leave that attribute's default unchanged. `structure_hash` (the version it ran under) and `since` (inclusive) and `until` (exclusive) on when the evaluation ran choose which evaluations count, before one case per item group is kept, so a case labeled under an older version is listed for that version even when a newer evaluation of the item exists, and `excluded` counts only those evaluations. `label_source` then narrows the cases; `total` counts the cases after every filter. Content is left out unless `include=content`, which caps a page at 50 cases (200 without). Pass next_cursor as cursor, with the same filters, while has_more is true. A case that gets newer feedback while you page moves ahead of the cursor: list again from the start to see relabeled 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":"evaluate","pages":[{"title":"Evaluate an item, or run a version over many items","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/evaluate","href":"/api-reference/evaluate/evaluate-an-item-or-run-a-version-over-many-items"},{"title":"Get a past evaluation","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/evaluations/{evaluation_id}","href":"/api-reference/evaluate/get-a-past-evaluation"},{"title":"List a decision's evaluations","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/evaluations","href":"/api-reference/evaluate/list-a-decisions-evaluations"}]},{"group":"review","pages":[{"title":"Fill the review queue","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/fill","href":"/api-reference/review/fill-the-review-queue"},{"title":"List review items","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items","href":"/api-reference/review/list-review-items"},{"title":"Get a review item","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{review_item_id}","href":"/api-reference/review/get-a-review-item"},{"title":"Get the structure a review item was decided with","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/review/items/{review_item_id}/configuration","href":"/api-reference/review/get-the-structure-a-review-item-was-decided-with"},{"title":"Mark a review item as shown","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/shown","href":"/api-reference/review/mark-a-review-item-as-shown"},{"title":"Submit a review","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/submit","href":"/api-reference/review/submit-a-review"},{"title":"Withdraw a review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/withdraw","href":"/api-reference/review/withdraw-a-review-answer"},{"title":"Change your own earlier review answer","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/change","href":"/api-reference/review/change-your-own-earlier-review-answer"},{"title":"Skip a review item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/skip","href":"/api-reference/review/skip-a-review-item"},{"title":"Add the reason for a blind disagreement","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/review/items/{review_item_id}/reason","href":"/api-reference/review/add-the-reason-for-a-blind-disagreement"}]},{"group":"suggestions","pages":[{"title":"List suggestions for a decision","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/list-suggestions-for-a-decision"},{"title":"Generate a suggestion on demand","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/suggestions","href":"/api-reference/suggestions/generate-a-suggestion-on-demand"},{"title":"Get a suggestion","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/suggestions/{suggestion_id}","href":"/api-reference/suggestions/get-a-suggestion"},{"title":"Mark a suggestion pulled or rejected","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/suggestions/{suggestion_id}/status","href":"/api-reference/suggestions/mark-a-suggestion-pulled-or-rejected"},{"title":"Preview a structure change against past feedback","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/decisions/{decision_id}/previews","href":"/api-reference/suggestions/preview-a-structure-change-against-past-feedback"},{"title":"Get the improvement loop's status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/loop","href":"/api-reference/suggestions/get-the-improvement-loops-status"}]},{"group":"usage","pages":[{"title":"Get a decision's engine cost, per evaluation and in total","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/decisions/{decision_id}/usage","href":"/api-reference/usage/get-a-decisions-engine-cost-per-evaluation-and-in-total"}]},{"group":"keys","pages":[{"title":"Identify the calling key or sign-in","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/whoami","href":"/api-reference/keys/identify-the-calling-key-or-sign-in"}]}]}]}]},"basePath":"","title":"Set what a decision optimizes for - Moonbounce Decisions API","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-B2eHeXx_.js","dist-Dt1IougW.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-DptzKFCt.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","AssistantPageLink-CZ6Wt2Vb.js"]}