Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.
Management API authentication. Pass an op-mak-… management token as a Bearer token. Runtime op-… API keys are rejected with 403 — they belong on the data-plane endpoints. Mint a management key from the platform UI under Settings → API keys.
Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.
Use org for organization-wide scope; projects requires project_uuids, functions requires function_uuids. IDs must belong to the caller's organization. Some rule kinds do not support functions. roles (role_names) and members (member_uuids) are only for comply budget rules: a monthly cap on each member's personal-key spend, where a member's own cap wins over their role's.
Optional operation identifier. Reuse it with the same rule id and create payload when retrying an uncertain response. A changed payload or a deleted original rule returns 409; successful replay returns the existing rule without recreating it.
Empty for a single resource. Endpoint-specific context appears here rather than as a sibling of data.
Last modified on September 17, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Opper","description":"The European AI gateway for agents: 700+ models from 50+ providers through one EU-hosted API, drop-in for the OpenAI, Anthropic and Gemini SDKs.","colors":{"primary":"#14cdcd","light":"#24cdcd","dark":"#2d9393"},"logo":{"light":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/light.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=fd4170c482c6cebc3c20d8f7f7e033f8","dark":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/dark.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=328888ac1f44b63c468d022fda86421d"},"favicon":"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/favicon.png?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=f1229b80ac7eee56ba2c14789e5fe22e","api":{"examples":{"defaults":"required","languages":["Shell","python","typescript"]}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"mailto:support@opper.ai","label":"Support"},{"href":"https://discord.gg/wcT3bc7Y4Y","label":"Discord"}],"primary":{"type":"button","label":"Login","href":"https://platform.opper.ai/auth/signin"}},"footer":{"socials":{"x":"https://x.com/opperai","github":"https://github.com/opper-ai","linkedin":"https://linkedin.com/company/opper-ai"}},"integrations":{"plausible":{"domain":"docs.opper.ai"}},"contextual":{"options":["copy","view"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"opper","hasAudioNarration":false,"actualSubdomain":"opper","customDomains":["docs.opper.ai"],"gitSource":{"type":"github","owner":"opper-ai","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0ec72ba6430b0c7478219","collectionId":"ddfd2dd3-5e06-4c69-b669-15d40fd005d7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0ec72ba6430b0c7478219"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0ec72ba6430b0c7478219","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Documentation","count":88},{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Platform APIs","count":41},{"language":"default","tag":"Management","count":30},{"language":"default","tag":"Apps","count":29},{"language":"default","tag":"Build","count":26},{"language":"default","tag":"Multimodality","count":22},{"language":"default","tag":"Observe \u0026 Control","count":15},{"language":"default","tag":"Gateway","count":14},{"language":"default","tag":"Compatibility","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes oppFade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes oppBlink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes oppDot{0%,80%,to{opacity:.25}40%{opacity:1}}.opp-term .opp-line{opacity:0;animation:oppFade .4s ease forwards}.opp-term a{color:inherit;text-decoration:none;cursor:default}.opp-cursor{display:inline-block;width:7px;height:1em;margin-left:5px;vertical-align:text-bottom;border-radius:1px;background:#14cdcd;animation:oppBlink 1.1s step-end infinite}.opp-dots span{display:inline-block;width:5px;height:5px;margin-right:3px;border-radius:50%;background:#6e7681;animation:oppDot 1.2s infinite}.opp-dots span:nth-child(2){animation-delay:.2s}.opp-dots span:nth-child(3){animation-delay:.4s}.opp-replay{margin-left:auto;background:0 0;border:1px solid #2b3440;color:#8b949e;font:inherit;font-size:11px;padding:2px 9px;border-radius:6px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s,color .2s,border-color .2s}.opp-replay.show{opacity:1;pointer-events:auto}.opp-replay:hover{color:#14cdcd;border-color:#14cdcd}"}],"page":{"pagePath":"v3-api-reference/management/create-control-rule","slug":"/v3-api-reference/management/create-control-rule","pageMetadata":{"openapi":"post /management/v1/controls/rules","title":"Create a control rule","description":"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the `controls:write` scope.","href":"/v3-api-reference/management/create-control-rule"},"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: [\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the \", _jsx(_components.code, {\n children: \"controls:write\"\n }), \" scope.\"]\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":{"openapi":"post /management/v1/controls/rules","title":"Create a control rule","description":"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the `controls:write` scope.","href":"/v3-api-reference/management/create-control-rule"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/opper/40a2b9bd0ec03258/script.js"],"openApiReferenceData":{"operation":{"description":"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the `controls:write` scope.","operationId":"createManagementControlRule","requestBody":"b52cfd85-ecd0-4571-b166-4dac079b2657","responses":{"200":"7d348da6-240d-4a8e-9657-9e2132be6413","201":"a402eeeb-31c5-4ab6-9ec2-9de533999cf3","400":"eac61bab-8b68-4498-8382-b37ca1fc7b27","401":"3186a37a-fdf1-4138-bb6c-2f47ff849d6f","402":"a04971f6-5ada-450b-8bbc-c9216a213074","403":"ee5725f6-77ff-4458-88aa-4478393567ee","404":"35101b89-efa1-4b0a-9535-baaa146c23f7","409":"f75d90be-ebb5-45ee-8e15-8861e0c06f1d","500":"4cbacc2a-3688-44b5-8a4b-0a0af0a10bc4"},"security":["8a78bcd3-d0e2-4fb8-be73-29909d28cc3d"],"summary":"Create a control rule","tags":["Management"],"method":"post","type":"path","servers":["93719e9c-1d61-42ff-9c97-ff83352b47ba","918c44e7-4a54-49d0-907e-d84254aa5dcb"],"path":"/management/v1/controls/rules","baseUrlOptions":["https://api.opper.ai","http://localhost:8080"],"title":"Create a control rule","codeSamples":[],"requestExampleLanguages":["bash","python","typescript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"oneOf":[{"type":"object","title":"comply.budget","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type","monthly_limit_cents"],"properties":{"monthly_limit_cents":{"description":"Cap per period in integer USD cents: 100 cents = $1; 1000 = $10; 10000 = $100. Zero is a zero-dollar cap, not unlimited. Named for the monthly period it once always was; it is the cap for whichever period is set.","minimum":0,"type":"integer","x-currency":"USD","x-unit":"cents","isRequired":true,"uniqueKey":"config.oneOf.0.monthly_limit_cents","typeLabel":"integer"},"type":{"const":"budget","type":"string","isRequired":true,"uniqueKey":"config.oneOf.0.type","typeLabel":"string"},"alerts_enabled":{"oneOf":[{"description":"Alert preference stored with the budget rule.","type":"boolean","uniqueKey":"config.oneOf.0.alerts_enabled.oneOf.0","typeLabel":"boolean"},{"description":"Alert preference stored with the budget rule.","type":"null","uniqueKey":"config.oneOf.0.alerts_enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.alerts_enabled","typeLabel":"boolean | null"},"counted_from":{"description":"Where a total cap counts spend from; omitted means the rule's creation. Set it to now to reset a total cap.","format":"date-time","type":"string","uniqueKey":"config.oneOf.0.counted_from","typeLabel":"string\u003cdate-time>"},"period":{"description":"When the cap resets: day (00:00 UTC), week (Monday 00:00 UTC), month (with the billing period), or total (never; counts from counted_from). Omitted means month.","enum":["day","week","month","total"],"type":"string","uniqueKey":"config.oneOf.0.period","typeLabel":"enum\u003cstring>"},"soft_limit_pct":{"oneOf":[{"description":"Warning threshold as a percentage of the cap; 80 means 80%. Zero or omission means unset.","maximum":100,"minimum":0,"type":"integer","uniqueKey":"config.oneOf.0.soft_limit_pct.oneOf.0","typeLabel":"integer"},{"description":"Warning threshold as a percentage of the cap; 80 means 80%. Zero or omission means unset.","maximum":100,"minimum":0,"type":"null","uniqueKey":"config.oneOf.0.soft_limit_pct.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.soft_limit_pct","typeLabel":"integer | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.0","typeLabel":"comply.budget · object"},{"type":"object","title":"comply.allowlist","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type","allowlist"],"properties":{"allowlist":{"additionalProperties":false,"properties":{"endpoints":{"items":{"description":"Endpoint ids to allow: the id field of a list_models entry, such as gemini/gemma-4-31b. Pins one endpoint and no other of its model. With models it is one pin list: an endpoint is allowed when its model is in models or its id is here, and the other categories allow it.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.endpoints","typeLabel":"string[]"},"exclude_endpoints":{"items":{"description":"Endpoint ids to deny: the id field of a list_models entry, such as gemini/gemma-4-31b. Exclusions accumulate down scopes and override allowlists.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.exclude_endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.exclude_endpoints","typeLabel":"string[]"},"exclude_models":{"items":{"description":"Model keys to deny on every provider: the model field of a list_models entry. Exclusions accumulate down scopes and override allowlists. Do not include and exclude the same model.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.exclude_models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.exclude_models","typeLabel":"string[]"},"handling":{"additionalProperties":false,"properties":{"cache_scopes":{"items":{"enum":["api_key","organization","shared"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.cache_scopes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.cache_scopes","typeLabel":"enum\u003cstring>[]"},"caching":{"items":{"enum":["explicit","implicit","none"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.caching.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.caching","typeLabel":"enum\u003cstring>[]"},"human_review":{"items":{"enum":["human_can_view","none","signals_only"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.human_review.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.human_review","typeLabel":"enum\u003cstring>[]"},"logging":{"items":{"enum":["abuse_monitoring","limited_debug","none","other"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.logging.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.logging","typeLabel":"enum\u003cstring>[]"},"max_retention_days":{"oneOf":[{"description":"Maximum upstream provider content-retention days, separate from Opper storage retention. Zero requires no upstream retention; null/omission imposes no cap.","minimum":0,"type":"integer","x-unit":"days","uniqueKey":"config.oneOf.1.allowlist.handling.max_retention_days.oneOf.0","typeLabel":"integer"},{"description":"Maximum upstream provider content-retention days, separate from Opper storage retention. Zero requires no upstream retention; null/omission imposes no cap.","minimum":0,"type":"null","x-unit":"days","uniqueKey":"config.oneOf.1.allowlist.handling.max_retention_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.allowlist.handling.max_retention_days","typeLabel":"integer | null"},"moderation":{"items":{"enum":["default_on","mandatory","none","optional"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.moderation.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.moderation","typeLabel":"enum\u003cstring>[]"},"subprocessors_read_content":{"oneOf":[{"description":"False requires that subprocessors do not read content; null/omission does not consult the category.","type":"boolean","uniqueKey":"config.oneOf.1.allowlist.handling.subprocessors_read_content.oneOf.0","typeLabel":"boolean"},{"description":"False requires that subprocessors do not read content; null/omission does not consult the category.","type":"null","uniqueKey":"config.oneOf.1.allowlist.handling.subprocessors_read_content.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.allowlist.handling.subprocessors_read_content","typeLabel":"boolean | null"},"training":{"items":{"enum":["no","opt_in","opt_out","yes"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.handling.training.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.handling.training","typeLabel":"enum\u003cstring>[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.handling","typeLabel":"object"},"maker":{"additionalProperties":false,"properties":{"jurisdiction":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.maker.jurisdiction.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.maker.jurisdiction","typeLabel":"enum\u003cstring>[]"},"name":{"items":{"description":"Slug of the company that trained the weights.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.maker.name.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.maker.name","typeLabel":"string[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.maker","typeLabel":"object"},"models":{"items":{"description":"Model keys to allow: the model field of a list_models entry, such as gemma-4-31b. A key admits every endpoint of that model the other categories allow. Verify the resulting callable ids with get_allowed_models.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.models","typeLabel":"string[]"},"provider":{"additionalProperties":false,"properties":{"locations":{"additionalProperties":false,"properties":{"inference":{"additionalProperties":false,"description":"Where inference runs. Codes match by containment: EU includes SE. Exclude cannot contain GLOBAL. Do not list an area and its member in the same direction.","properties":{"exclude":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"not":{"const":"GLOBAL"},"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.inference.exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.inference.exclude","typeLabel":"enum\u003cstring>[]"},"include":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.inference.include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.inference.include","typeLabel":"enum\u003cstring>[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.locations.inference","typeLabel":"object"},"jurisdiction":{"additionalProperties":false,"description":"The provider's ultimate parent's legal home, separate from inference/storage residency. Codes match by containment: EU includes SE. Exclude cannot contain GLOBAL. Do not list an area and its member in the same direction.","properties":{"exclude":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"not":{"const":"GLOBAL"},"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.jurisdiction.exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.jurisdiction.exclude","typeLabel":"enum\u003cstring>[]"},"include":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.jurisdiction.include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.jurisdiction.include","typeLabel":"enum\u003cstring>[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.locations.jurisdiction","typeLabel":"object"},"storage":{"additionalProperties":false,"description":"Where upstream retained content is stored. A route retaining no content satisfies storage residency. Codes match by containment: EU includes SE. Exclude cannot contain GLOBAL. Do not list an area and its member in the same direction.","properties":{"exclude":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"not":{"const":"GLOBAL"},"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.storage.exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.storage.exclude","typeLabel":"enum\u003cstring>[]"},"include":{"items":{"description":"Uppercase ISO 3166-1 alpha-2 country code or EU/EEA/GLOBAL area. See locations for labels and containment.","enum":["AE","AR","AT","AU","BE","BG","BH","BR","CA","CH","CL","CN","CY","CZ","DE","DK","EE","EEA","EG","ES","EU","FI","FR","GB","GLOBAL","GR","HK","HR","HU","ID","IE","IL","IN","IS","IT","JP","KE","KR","KW","LI","LT","LU","LV","MT","MX","MY","NG","NL","NO","NZ","PH","PL","PT","QA","RO","RS","SA","SE","SG","SI","SK","TH","TR","TW","UA","US","VN","ZA"],"type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.locations.storage.include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.locations.storage.include","typeLabel":"enum\u003cstring>[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.locations.storage","typeLabel":"object"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.locations","typeLabel":"object"},"name":{"additionalProperties":false,"description":"Provider company public slugs, not adapter keys. Do not include and exclude the same company.","properties":{"exclude":{"items":{"description":"Provider company slug.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.name.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.name.exclude","typeLabel":"string[]"},"include":{"items":{"description":"Provider company slug.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.name.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.name.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.name","typeLabel":"object"},"route":{"additionalProperties":false,"description":"Individual catalog service-route IDs. Do not include and exclude the same route.","properties":{"exclude":{"items":{"description":"Catalog service-route ID.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.route.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.route.exclude","typeLabel":"string[]"},"include":{"items":{"description":"Catalog service-route ID.","minLength":1,"pattern":"^\\S(?:.*\\S)?$","type":"string","uniqueKey":"config.oneOf.1.allowlist.provider.route.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueItems":true,"uniqueKey":"config.oneOf.1.allowlist.provider.route.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider.route","typeLabel":"object"}},"type":"object","uniqueKey":"config.oneOf.1.allowlist.provider","typeLabel":"object"}},"type":"object","isRequired":true,"uniqueKey":"config.oneOf.1.allowlist","typeLabel":"object"},"type":{"const":"allowlist","type":"string","isRequired":true,"uniqueKey":"config.oneOf.1.type","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.1","typeLabel":"comply.allowlist · object"},{"type":"object","title":"comply.retention","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type"],"properties":{"type":{"const":"retention","type":"string","isRequired":true,"uniqueKey":"config.oneOf.2.type","typeLabel":"string"},"retention_days":{"oneOf":[{"description":"0–30 days. Zero enables zero-day storage retention. Null/omission contributes no retention cap.","maximum":30,"minimum":0,"type":"integer","x-unit":"days","uniqueKey":"config.oneOf.2.retention_days.oneOf.0","typeLabel":"integer"},{"description":"0–30 days. Zero enables zero-day storage retention. Null/omission contributes no retention cap.","maximum":30,"minimum":0,"type":"null","x-unit":"days","uniqueKey":"config.oneOf.2.retention_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.2.retention_days","typeLabel":"integer | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.2","typeLabel":"comply.retention · object"},{"type":"object","title":"route.default_model","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type","default_model"],"properties":{"default_model":{"oneOf":[{"description":"Callable model identifier, or null for an explicit no-default setting.","minLength":1,"type":"string","isRequired":true,"uniqueKey":"config.oneOf.3.default_model.oneOf.0","typeLabel":"string"},{"description":"Callable model identifier, or null for an explicit no-default setting.","minLength":1,"type":"null","isRequired":true,"uniqueKey":"config.oneOf.3.default_model.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"config.oneOf.3.default_model","typeLabel":"string | null"},"type":{"const":"default_model","type":"string","isRequired":true,"uniqueKey":"config.oneOf.3.type","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.3","typeLabel":"route.default_model · object"},{"type":"object","title":"route.cache","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type"],"properties":{"type":{"const":"cache","type":"string","isRequired":true,"uniqueKey":"config.oneOf.4.type","typeLabel":"string"},"ttl_seconds":{"oneOf":[{"default":3600,"description":"Cache lifetime in seconds. Null/omission uses the server default; zero is invalid.","maximum":3600,"minimum":60,"type":"integer","x-unit":"seconds","uniqueKey":"config.oneOf.4.ttl_seconds.oneOf.0","typeLabel":"integer"},{"default":3600,"description":"Cache lifetime in seconds. Null/omission uses the server default; zero is invalid.","maximum":3600,"minimum":60,"type":"null","x-unit":"seconds","uniqueKey":"config.oneOf.4.ttl_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.4.ttl_seconds","typeLabel":"integer | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.4","typeLabel":"route.cache · object"},{"type":"object","title":"route.pool_order","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["type","order"],"properties":{"order":{"enum":["round_robin","cost","latency","throughput","weighted","custom"],"type":"string","isRequired":true,"uniqueKey":"config.oneOf.5.order","typeLabel":"enum\u003cstring>"},"type":{"const":"pool_order","type":"string","isRequired":true,"uniqueKey":"config.oneOf.5.type","typeLabel":"string"},"expression":{"description":"CEL sort key; only valid when order=custom.","minLength":1,"pattern":"\\S","type":"string","uniqueKey":"config.oneOf.5.expression","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.5","typeLabel":"route.pool_order · object"},{"type":"object","title":"guard.regex","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["engine","patterns"],"properties":{"engine":{"const":"regex","type":"string","isRequired":true,"uniqueKey":"config.oneOf.6.engine","typeLabel":"string"},"patterns":{"items":{"additionalProperties":false,"properties":{"regex":{"description":"Go regular expression, compiled on save.","minLength":1,"pattern":"\\S","type":"string","isRequired":true,"uniqueKey":"config.oneOf.6.patterns.items.[INDEX].regex","typeLabel":"string"},"name":{"type":"string","uniqueKey":"config.oneOf.6.patterns.items.[INDEX].name","typeLabel":"string"}},"required":["regex"],"type":"object","uniqueKey":"config.oneOf.6.patterns.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueItems":true,"isRequired":true,"uniqueKey":"config.oneOf.6.patterns","typeLabel":"object[]"},"action":{"default":"flag","enum":["flag","block","redact"],"type":"string","uniqueKey":"config.oneOf.6.action","typeLabel":"enum\u003cstring>"},"applies_to":{"default":"input","enum":["input","output","both"],"type":"string","uniqueKey":"config.oneOf.6.applies_to","typeLabel":"enum\u003cstring>"},"handle":{"description":"What a call names the guard by in X-Opper-Guards. Unique per organization. Omit to derive one from the rule name on first save; kept when the rule is renamed or its config is replaced without it.","maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string","uniqueKey":"config.oneOf.6.handle","typeLabel":"string"},"invoke":{"default":"always","description":"always: runs on every call in the rule's scope. on_request: runs only on calls that name the rule (its handle or id) in the X-Opper-Guards header.","enum":["always","on_request"],"type":"string","uniqueKey":"config.oneOf.6.invoke","typeLabel":"enum\u003cstring>"},"kind":{"const":"guard","type":"string","uniqueKey":"config.oneOf.6.kind","typeLabel":"string"},"name":{"type":"string","uniqueKey":"config.oneOf.6.name","typeLabel":"string"},"replacement":{"description":"Replacement text when action=redact.","type":"string","uniqueKey":"config.oneOf.6.replacement","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.6","typeLabel":"guard.regex · object"},{"type":"object","title":"guard.llm","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["engine","prompt"],"properties":{"engine":{"const":"llm","type":"string","isRequired":true,"uniqueKey":"config.oneOf.7.engine","typeLabel":"string"},"prompt":{"description":"Natural-language check performed by the guard.","minLength":1,"pattern":"\\S","type":"string","isRequired":true,"uniqueKey":"config.oneOf.7.prompt","typeLabel":"string"},"action":{"default":"flag","enum":["flag","block","redact"],"type":"string","uniqueKey":"config.oneOf.7.action","typeLabel":"enum\u003cstring>"},"applies_to":{"default":"input","enum":["input","output","both"],"type":"string","uniqueKey":"config.oneOf.7.applies_to","typeLabel":"enum\u003cstring>"},"handle":{"description":"What a call names the guard by in X-Opper-Guards. Unique per organization. Omit to derive one from the rule name on first save; kept when the rule is renamed or its config is replaced without it.","maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string","uniqueKey":"config.oneOf.7.handle","typeLabel":"string"},"invoke":{"default":"always","description":"always: runs on every call in the rule's scope. on_request: runs only on calls that name the rule (its handle or id) in the X-Opper-Guards header.","enum":["always","on_request"],"type":"string","uniqueKey":"config.oneOf.7.invoke","typeLabel":"enum\u003cstring>"},"kind":{"const":"guard","type":"string","uniqueKey":"config.oneOf.7.kind","typeLabel":"string"},"name":{"type":"string","uniqueKey":"config.oneOf.7.name","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.7","typeLabel":"guard.llm · object"},{"type":"object","title":"guard.decision","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["engine","categories"],"properties":{"categories":{"items":{"additionalProperties":false,"properties":{"name":{"description":"Custom category name, reported in findings.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"config.oneOf.8.categories.items.[INDEX].name","typeLabel":"string"},"preset":{"description":"A category Opper maintains. Takes no name or statement.","enum":["jailbreak","pii","prompt_injection","toxicity"],"type":"string","uniqueKey":"config.oneOf.8.categories.items.[INDEX].preset","typeLabel":"enum\u003cstring>"},"statement":{"description":"Custom category: a sentence that is true when the text should be caught.","maxLength":1000,"type":"string","uniqueKey":"config.oneOf.8.categories.items.[INDEX].statement","typeLabel":"string"},"threshold":{"exclusiveMinimum":0,"maximum":1,"type":"number","uniqueKey":"config.oneOf.8.categories.items.[INDEX].threshold","typeLabel":"number"}},"type":"object","uniqueKey":"config.oneOf.8.categories.items.[INDEX]","typeLabel":"object"},"maxItems":16,"minItems":1,"type":"array","isRequired":true,"uniqueKey":"config.oneOf.8.categories","typeLabel":"object[]"},"engine":{"const":"decision","type":"string","isRequired":true,"uniqueKey":"config.oneOf.8.engine","typeLabel":"string"},"action":{"default":"flag","enum":["flag","block"],"type":"string","uniqueKey":"config.oneOf.8.action","typeLabel":"enum\u003cstring>"},"applies_to":{"default":"input","enum":["input","output","both"],"type":"string","uniqueKey":"config.oneOf.8.applies_to","typeLabel":"enum\u003cstring>"},"handle":{"description":"What a call names the guard by in X-Opper-Guards. Unique per organization. Omit to derive one from the rule name on first save; kept when the rule is renamed or its config is replaced without it.","maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string","uniqueKey":"config.oneOf.8.handle","typeLabel":"string"},"invoke":{"default":"always","description":"always: runs on every call in the rule's scope. on_request: runs only on calls that name the rule (its handle or id) in the X-Opper-Guards header.","enum":["always","on_request"],"type":"string","uniqueKey":"config.oneOf.8.invoke","typeLabel":"enum\u003cstring>"},"kind":{"const":"guard","type":"string","uniqueKey":"config.oneOf.8.kind","typeLabel":"string"},"model":{"description":"Decision model (catalog type evaluation). Omit for the server's default ladder.","minLength":1,"pattern":"\\S","type":"string","uniqueKey":"config.oneOf.8.model","typeLabel":"string"},"name":{"type":"string","uniqueKey":"config.oneOf.8.name","typeLabel":"string"},"on_error":{"default":"allow","description":"What the guard does when no model answers.","enum":["allow","block"],"type":"string","uniqueKey":"config.oneOf.8.on_error","typeLabel":"enum\u003cstring>"},"threshold":{"description":"Default threshold for categories without their own; omit to use each preset's.","exclusiveMinimum":0,"maximum":1,"type":"number","uniqueKey":"config.oneOf.8.threshold","typeLabel":"number"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.8","typeLabel":"guard.decision · object"},{"type":"object","title":"observe","description":"Config for the rule kind. Replaces the full config on update. Read existing rules and get_rule_vocabulary before changing it; organization constraints remain in force. Use schema_version=4 for model lists: models and exclude_models name model keys, endpoints and exclude_endpoints name endpoint ids; schema_version=2 remains supported for provider company allowlists. Opper retention_days and upstream handling.max_retention_days are separate controls.","required":["evaluators"],"properties":{"evaluators":{"description":"Uses the server's Controls judge; client model tiers are not configurable.","items":{"additionalProperties":false,"properties":{"type":{"const":"judge","type":"string","isRequired":true,"uniqueKey":"config.oneOf.9.evaluators.items.[INDEX].type","typeLabel":"string"}},"required":["type"],"type":"object","uniqueKey":"config.oneOf.9.evaluators.items.[INDEX]","typeLabel":"object"},"maxItems":1,"minItems":1,"type":"array","isRequired":true,"uniqueKey":"config.oneOf.9.evaluators","typeLabel":"object[]"},"criteria":{"description":"Evaluation rubric. Required for binary scoring; omit for the default score rubric.","minLength":1,"pattern":"\\S","type":"string","uniqueKey":"config.oneOf.9.criteria","typeLabel":"string"},"sampling":{"oneOf":[{"type":"object","required":["strategy"],"properties":{"strategy":{"const":"all","type":"string","isRequired":true,"uniqueKey":"config.oneOf.9.sampling.oneOf.0.strategy","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"config.oneOf.9.sampling.oneOf.0","typeLabel":"object"},{"type":"object","required":["strategy"],"properties":{"strategy":{"const":"rate","type":"string","isRequired":true,"uniqueKey":"config.oneOf.9.sampling.oneOf.1.strategy","typeLabel":"string"},"rate":{"default":10,"description":"Evaluate 1 in N generations. rate=10 is about 10%; rate=100 is about 1%.","minimum":1,"type":"integer","uniqueKey":"config.oneOf.9.sampling.oneOf.1.rate","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"config.oneOf.9.sampling.oneOf.1","typeLabel":"object"},{"type":"object","required":["strategy"],"properties":{"strategy":{"const":"adaptive","type":"string","isRequired":true,"uniqueKey":"config.oneOf.9.sampling.oneOf.2.strategy","typeLabel":"string"},"base_rate":{"default":100,"description":"Evaluations per window before adaptive throttling.","minimum":1,"type":"integer","uniqueKey":"config.oneOf.9.sampling.oneOf.2.base_rate","typeLabel":"integer"},"window":{"default":"1h","enum":["1h","24h"],"type":"string","uniqueKey":"config.oneOf.9.sampling.oneOf.2.window","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"config.oneOf.9.sampling.oneOf.2","typeLabel":"object"}],"uniqueKey":"config.oneOf.9.sampling","typeLabel":"object"},"score_type":{"default":"score","enum":["score","binary"],"type":"string","uniqueKey":"config.oneOf.9.score_type","typeLabel":"enum\u003cstring>"},"threshold":{"default":0.5,"description":"Scores below this value are flagged. Omission or zero uses 0.5. Binary scoring flags a zero verdict.","maximum":1,"minimum":0,"type":"number","uniqueKey":"config.oneOf.9.threshold","typeLabel":"number"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"config.oneOf.9","typeLabel":"observe · object"}],"isRequired":true,"uniqueKey":"config","typeLabel":"comply.budget · object | comply.allowlist · object | comply.retention · object | route.default_model · object | route.cache · object | route.pool_order · object | guard.regex · object | guard.llm · object | guard.decision · object | observe · object"},"id":{"description":"Client-generated UUID for this new rule.","format":"uuid","type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"kind":{"enum":["guard","observe","route","comply"],"type":"string","isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"scope":{"additionalProperties":false,"description":"Use org for organization-wide scope; projects requires project_uuids, functions requires function_uuids. IDs must belong to the caller's organization. Some rule kinds do not support functions. roles (role_names) and members (member_uuids) are only for comply budget rules: a monthly cap on each member's personal-key spend, where a member's own cap wins over their role's.","properties":{"type":{"enum":["org","projects","functions","roles","members"],"type":"string","isRequired":true,"uniqueKey":"scope.type","typeLabel":"enum\u003cstring>"},"function_uuids":{"items":{"format":"uuid","type":"string","uniqueKey":"scope.function_uuids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","uniqueKey":"scope.function_uuids","typeLabel":"string\u003cuuid>[]"},"member_uuids":{"description":"User UUIDs of organization members for a members scope.","items":{"format":"uuid","type":"string","uniqueKey":"scope.member_uuids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","uniqueKey":"scope.member_uuids","typeLabel":"string\u003cuuid>[]"},"project_uuids":{"items":{"format":"uuid","type":"string","uniqueKey":"scope.project_uuids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","uniqueKey":"scope.project_uuids","typeLabel":"string\u003cuuid>[]"},"role_names":{"description":"Role names (built-in or the organization's custom roles) for a roles scope.","items":{"type":"string","uniqueKey":"scope.role_names.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"scope.role_names","typeLabel":"string[]"}},"required":["type"],"type":"object","isRequired":true,"uniqueKey":"scope","typeLabel":"object"},"confirm_file_deletion":{"description":"Deprecated and ignored: no rule deletes stored files.","type":"boolean","uniqueKey":"confirm_file_deletion","typeLabel":"boolean"},"enabled":{"description":"Whether the rule is enforced. Omitted on create means false.","type":"boolean","uniqueKey":"enabled","typeLabel":"boolean"},"idempotency_key":{"description":"Optional operation identifier. Reuse it with the same rule id and create payload when retrying an uncertain response. A changed payload or a deleted original rule returns 409; successful replay returns the existing rule without recreating it.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","uniqueKey":"idempotency_key","typeLabel":"string"},"name":{"oneOf":[{"description":"Display name; null clears it.","type":"string","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"description":"Display name; null clears it.","type":"null","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"schema_version":{"description":"Config schema version. Omit on create for version 1. Version 2 comply allowlists identify providers by company slug.","maximum":2,"minimum":1,"type":"integer","uniqueKey":"schema_version","typeLabel":"integer"}},"required":["id","kind","scope","config"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"config":{"monthly_limit_cents":1,"type":"budget","alerts_enabled":true,"counted_from":"2023-11-07T05:31:56Z","soft_limit_pct":50},"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","scope":{"function_uuids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"member_uuids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"project_uuids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"role_names":["\u003cstring>"]},"confirm_file_deletion":true,"enabled":true,"idempotency_key":"\u003cstring>","name":"\u003cstring>","schema_version":1}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"7d348da6-240d-4a8e-9657-9e2132be6413":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"config":{"description":"The rule's configuration; its shape depends on kind. comply and route rules carry a type discriminator (comply: allowlist | retention | budget; route: cache | pool_order | absent for a default-model rule); guard and observe rules carry their configuration inline.","type":"object","isRequired":true,"uniqueKey":"data.config","typeLabel":"object"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.enabled","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"},"kind":{"type":"string","isRequired":true,"uniqueKey":"data.kind","typeLabel":"string"},"schema_version":{"type":"integer","isRequired":true,"uniqueKey":"data.schema_version","typeLabel":"integer"},"scope":{"properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"data.scope.type","typeLabel":"string"},"function_uuids":{"items":{"type":"string","uniqueKey":"data.scope.function_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.function_uuids","typeLabel":"string[]"},"member_uuids":{"items":{"type":"string","uniqueKey":"data.scope.member_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.member_uuids","typeLabel":"string[]"},"project_uuids":{"items":{"type":"string","uniqueKey":"data.scope.project_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.project_uuids","typeLabel":"string[]"},"role_names":{"items":{"type":"string","uniqueKey":"data.scope.role_names.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.role_names","typeLabel":"string[]"}},"required":["type"],"type":"object","isRequired":true,"uniqueKey":"data.scope","typeLabel":"object"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"allowed_model_ids":{"items":{"type":"string","uniqueKey":"data.allowed_model_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.allowed_model_ids","typeLabel":"string[]"},"confirm_file_deletion":{"type":"boolean","uniqueKey":"data.confirm_file_deletion","typeLabel":"boolean"},"deleted_projects":{"items":{"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.deleted_projects.items.[INDEX].name","typeLabel":"string"},"uuid":{"type":"string","isRequired":true,"uniqueKey":"data.deleted_projects.items.[INDEX].uuid","typeLabel":"string"}},"required":["uuid","name"],"type":"object","uniqueKey":"data.deleted_projects.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"data.deleted_projects","typeLabel":"object[]"},"effective_count":{"type":"integer","uniqueKey":"data.effective_count","typeLabel":"integer"},"health":{"properties":{"reason":{"type":"string","isRequired":true,"uniqueKey":"data.health.reason","typeLabel":"string"},"skipped_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.health.skipped_at","typeLabel":"string\u003cdate-time>"}},"required":["skipped_at","reason"],"type":"object","uniqueKey":"data.health","typeLabel":"object"},"idempotency_key":{"type":"string","uniqueKey":"data.idempotency_key","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"parent_allowlist":{"properties":{"models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.models.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.models","typeLabel":"string[]"},"providers":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.providers.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.providers","typeLabel":"string[]"},"regions":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.regions.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.regions","typeLabel":"string[]"},"deny_all":{"type":"boolean","uniqueKey":"data.parent_allowlist.deny_all","typeLabel":"boolean"},"endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.endpoints","typeLabel":"string[]"},"exclude_endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_endpoints","typeLabel":"string[]"},"exclude_model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_model_keys","typeLabel":"string[]"},"exclude_models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_models","typeLabel":"string[]"},"exclude_providers":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_providers.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_providers","typeLabel":"string[]"},"exclude_service_routes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_service_routes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_service_routes","typeLabel":"string[]"},"handling":{"properties":{"cache_scopes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.cache_scopes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.cache_scopes","typeLabel":"string[]"},"caching":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.caching.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.caching","typeLabel":"string[]"},"human_review":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.human_review.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.human_review","typeLabel":"string[]"},"logging":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.logging.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.logging","typeLabel":"string[]"},"max_retention_days":{"type":"integer","uniqueKey":"data.parent_allowlist.handling.max_retention_days","typeLabel":"integer"},"moderation":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.moderation.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.moderation","typeLabel":"string[]"},"subprocessors_read_content":{"type":"boolean","uniqueKey":"data.parent_allowlist.handling.subprocessors_read_content","typeLabel":"boolean"},"training":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.training.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.training","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.handling","typeLabel":"object"},"maker":{"properties":{"jurisdiction":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.maker.jurisdiction.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.maker.jurisdiction","typeLabel":"string[]"},"name":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.maker.name.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.maker.name","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.maker","typeLabel":"object"},"model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.model_keys","typeLabel":"string[]"},"pins":{"items":{"properties":{"endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].endpoints","typeLabel":"string[]"},"model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].model_keys","typeLabel":"string[]"},"models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].models","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.pins.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"data.parent_allowlist.pins","typeLabel":"object[]"},"provider":{"properties":{"locations":{"properties":{"inference":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.inference.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.inference.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.inference.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.inference.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.inference","typeLabel":"object"},"jurisdiction":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction","typeLabel":"object"},"storage":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.storage.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.storage.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.storage.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.storage.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.storage","typeLabel":"object"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations","typeLabel":"object"},"name":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.name.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.name.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.name.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.name.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.name","typeLabel":"object"},"route":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.route.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.route.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.route.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.route.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.route","typeLabel":"object"}},"type":"object","uniqueKey":"data.parent_allowlist.provider","typeLabel":"object"},"service_routes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.service_routes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.service_routes","typeLabel":"string[]"}},"required":["providers","regions","models"],"type":"object","uniqueKey":"data.parent_allowlist","typeLabel":"object"}},"required":["id","kind","enabled","scope","schema_version","config","created_at","updated_at"],"type":"object","uniqueKey":"data","typeLabel":"object"},"meta":{"description":"Empty for a single resource. Endpoint-specific context appears here rather than as a sibling of `data`.","type":"object","uniqueKey":"meta","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"config":{},"created_at":"2023-11-07T05:31:56Z","enabled":true,"id":"\u003cstring>","kind":"\u003cstring>","schema_version":123,"scope":{"type":"\u003cstring>","function_uuids":["\u003cstring>"],"member_uuids":["\u003cstring>"],"project_uuids":["\u003cstring>"],"role_names":["\u003cstring>"]},"updated_at":"2023-11-07T05:31:56Z","allowed_model_ids":["\u003cstring>"],"confirm_file_deletion":true,"deleted_projects":[{"name":"\u003cstring>","uuid":"\u003cstring>"}],"effective_count":123,"health":{"reason":"\u003cstring>","skipped_at":"2023-11-07T05:31:56Z"},"idempotency_key":"\u003cstring>","name":"\u003cstring>","parent_allowlist":{"models":["\u003cstring>"],"providers":["\u003cstring>"],"regions":["\u003cstring>"],"deny_all":true,"endpoints":["\u003cstring>"],"exclude_endpoints":["\u003cstring>"],"exclude_model_keys":["\u003cstring>"],"exclude_models":["\u003cstring>"],"exclude_providers":["\u003cstring>"],"exclude_service_routes":["\u003cstring>"],"handling":{"cache_scopes":["\u003cstring>"],"caching":["\u003cstring>"],"human_review":["\u003cstring>"],"logging":["\u003cstring>"],"max_retention_days":123,"moderation":["\u003cstring>"],"subprocessors_read_content":true,"training":["\u003cstring>"]},"maker":{"jurisdiction":["\u003cstring>"],"name":["\u003cstring>"]},"model_keys":["\u003cstring>"],"pins":[{"endpoints":["\u003cstring>"],"model_keys":["\u003cstring>"],"models":["\u003cstring>"]}],"provider":{"locations":{"inference":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"jurisdiction":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"storage":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]}},"name":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"route":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]}},"service_routes":["\u003cstring>"]}},"meta":{}}}},"exampleType":"generated"}},"description":"Idempotent replay: current state of the previously created rule.","exampleType":"generated"},"a402eeeb-31c5-4ab6-9ec2-9de533999cf3":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"config":{"description":"The rule's configuration; its shape depends on kind. comply and route rules carry a type discriminator (comply: allowlist | retention | budget; route: cache | pool_order | absent for a default-model rule); guard and observe rules carry their configuration inline.","type":"object","isRequired":true,"uniqueKey":"data.config","typeLabel":"object"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.enabled","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"},"kind":{"type":"string","isRequired":true,"uniqueKey":"data.kind","typeLabel":"string"},"schema_version":{"type":"integer","isRequired":true,"uniqueKey":"data.schema_version","typeLabel":"integer"},"scope":{"properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"data.scope.type","typeLabel":"string"},"function_uuids":{"items":{"type":"string","uniqueKey":"data.scope.function_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.function_uuids","typeLabel":"string[]"},"member_uuids":{"items":{"type":"string","uniqueKey":"data.scope.member_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.member_uuids","typeLabel":"string[]"},"project_uuids":{"items":{"type":"string","uniqueKey":"data.scope.project_uuids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.project_uuids","typeLabel":"string[]"},"role_names":{"items":{"type":"string","uniqueKey":"data.scope.role_names.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.scope.role_names","typeLabel":"string[]"}},"required":["type"],"type":"object","isRequired":true,"uniqueKey":"data.scope","typeLabel":"object"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"allowed_model_ids":{"items":{"type":"string","uniqueKey":"data.allowed_model_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.allowed_model_ids","typeLabel":"string[]"},"confirm_file_deletion":{"type":"boolean","uniqueKey":"data.confirm_file_deletion","typeLabel":"boolean"},"deleted_projects":{"items":{"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.deleted_projects.items.[INDEX].name","typeLabel":"string"},"uuid":{"type":"string","isRequired":true,"uniqueKey":"data.deleted_projects.items.[INDEX].uuid","typeLabel":"string"}},"required":["uuid","name"],"type":"object","uniqueKey":"data.deleted_projects.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"data.deleted_projects","typeLabel":"object[]"},"effective_count":{"type":"integer","uniqueKey":"data.effective_count","typeLabel":"integer"},"health":{"properties":{"reason":{"type":"string","isRequired":true,"uniqueKey":"data.health.reason","typeLabel":"string"},"skipped_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.health.skipped_at","typeLabel":"string\u003cdate-time>"}},"required":["skipped_at","reason"],"type":"object","uniqueKey":"data.health","typeLabel":"object"},"idempotency_key":{"type":"string","uniqueKey":"data.idempotency_key","typeLabel":"string"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"parent_allowlist":{"properties":{"models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.models.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.models","typeLabel":"string[]"},"providers":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.providers.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.providers","typeLabel":"string[]"},"regions":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.regions.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"data.parent_allowlist.regions","typeLabel":"string[]"},"deny_all":{"type":"boolean","uniqueKey":"data.parent_allowlist.deny_all","typeLabel":"boolean"},"endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.endpoints","typeLabel":"string[]"},"exclude_endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_endpoints","typeLabel":"string[]"},"exclude_model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_model_keys","typeLabel":"string[]"},"exclude_models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_models","typeLabel":"string[]"},"exclude_providers":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_providers.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_providers","typeLabel":"string[]"},"exclude_service_routes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.exclude_service_routes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.exclude_service_routes","typeLabel":"string[]"},"handling":{"properties":{"cache_scopes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.cache_scopes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.cache_scopes","typeLabel":"string[]"},"caching":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.caching.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.caching","typeLabel":"string[]"},"human_review":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.human_review.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.human_review","typeLabel":"string[]"},"logging":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.logging.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.logging","typeLabel":"string[]"},"max_retention_days":{"type":"integer","uniqueKey":"data.parent_allowlist.handling.max_retention_days","typeLabel":"integer"},"moderation":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.moderation.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.moderation","typeLabel":"string[]"},"subprocessors_read_content":{"type":"boolean","uniqueKey":"data.parent_allowlist.handling.subprocessors_read_content","typeLabel":"boolean"},"training":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.handling.training.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.handling.training","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.handling","typeLabel":"object"},"maker":{"properties":{"jurisdiction":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.maker.jurisdiction.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.maker.jurisdiction","typeLabel":"string[]"},"name":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.maker.name.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.maker.name","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.maker","typeLabel":"object"},"model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.model_keys","typeLabel":"string[]"},"pins":{"items":{"properties":{"endpoints":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].endpoints.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].endpoints","typeLabel":"string[]"},"model_keys":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].model_keys.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].model_keys","typeLabel":"string[]"},"models":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].models.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.pins.items.[INDEX].models","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.pins.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"data.parent_allowlist.pins","typeLabel":"object[]"},"provider":{"properties":{"locations":{"properties":{"inference":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.inference.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.inference.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.inference.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.inference.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.inference","typeLabel":"object"},"jurisdiction":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.jurisdiction","typeLabel":"object"},"storage":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.storage.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.storage.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.locations.storage.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.locations.storage.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations.storage","typeLabel":"object"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.locations","typeLabel":"object"},"name":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.name.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.name.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.name.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.name.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.name","typeLabel":"object"},"route":{"properties":{"exclude":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.route.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.route.exclude","typeLabel":"string[]"},"include":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.provider.route.include.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.provider.route.include","typeLabel":"string[]"}},"type":"object","uniqueKey":"data.parent_allowlist.provider.route","typeLabel":"object"}},"type":"object","uniqueKey":"data.parent_allowlist.provider","typeLabel":"object"},"service_routes":{"items":{"type":"string","uniqueKey":"data.parent_allowlist.service_routes.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.parent_allowlist.service_routes","typeLabel":"string[]"}},"required":["providers","regions","models"],"type":"object","uniqueKey":"data.parent_allowlist","typeLabel":"object"}},"required":["id","kind","enabled","scope","schema_version","config","created_at","updated_at"],"type":"object","uniqueKey":"data","typeLabel":"object"},"meta":{"description":"Empty for a single resource. Endpoint-specific context appears here rather than as a sibling of `data`.","type":"object","uniqueKey":"meta","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"config":{},"created_at":"2023-11-07T05:31:56Z","enabled":true,"id":"\u003cstring>","kind":"\u003cstring>","schema_version":123,"scope":{"type":"\u003cstring>","function_uuids":["\u003cstring>"],"member_uuids":["\u003cstring>"],"project_uuids":["\u003cstring>"],"role_names":["\u003cstring>"]},"updated_at":"2023-11-07T05:31:56Z","allowed_model_ids":["\u003cstring>"],"confirm_file_deletion":true,"deleted_projects":[{"name":"\u003cstring>","uuid":"\u003cstring>"}],"effective_count":123,"health":{"reason":"\u003cstring>","skipped_at":"2023-11-07T05:31:56Z"},"idempotency_key":"\u003cstring>","name":"\u003cstring>","parent_allowlist":{"models":["\u003cstring>"],"providers":["\u003cstring>"],"regions":["\u003cstring>"],"deny_all":true,"endpoints":["\u003cstring>"],"exclude_endpoints":["\u003cstring>"],"exclude_model_keys":["\u003cstring>"],"exclude_models":["\u003cstring>"],"exclude_providers":["\u003cstring>"],"exclude_service_routes":["\u003cstring>"],"handling":{"cache_scopes":["\u003cstring>"],"caching":["\u003cstring>"],"human_review":["\u003cstring>"],"logging":["\u003cstring>"],"max_retention_days":123,"moderation":["\u003cstring>"],"subprocessors_read_content":true,"training":["\u003cstring>"]},"maker":{"jurisdiction":["\u003cstring>"],"name":["\u003cstring>"]},"model_keys":["\u003cstring>"],"pins":[{"endpoints":["\u003cstring>"],"model_keys":["\u003cstring>"],"models":["\u003cstring>"]}],"provider":{"locations":{"inference":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"jurisdiction":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"storage":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]}},"name":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]},"route":{"exclude":["\u003cstring>"],"include":["\u003cstring>"]}},"service_routes":["\u003cstring>"]}},"meta":{}}}},"exampleType":"generated"}},"description":"Successful response","exampleType":"generated"},"eac61bab-8b68-4498-8382-b37ca1fc7b27":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Any value","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"meta","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":"\u003cunknown>"},"meta":{}}}},"exampleType":"generated"}},"description":"Bad request","exampleType":"generated"},"3186a37a-fdf1-4138-bb6c-2f47ff849d6f":{"description":"Unauthorized - missing or invalid API key","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"a04971f6-5ada-450b-8bbc-c9216a213074":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"enum":["plan_required"],"type":"string","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"type":{"enum":["payment_required"],"type":"string","uniqueKey":"error.type","typeLabel":"enum\u003cstring>"}},"type":"object","uniqueKey":"error","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"plan_required","message":"\u003cstring>","type":"payment_required"}}}},"exampleType":"generated"}},"description":"The rule's kind is a Control Plane feature (`observe`, `route`, `guard`, `comply`) and the organization's plan does not include it. The message names the kind and the current plan. Reading and deleting rules is not plan gated.","exampleType":"generated"},"ee5725f6-77ff-4458-88aa-4478393567ee":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"required_scope":{"description":"Present on the scope refusal.","type":"string","uniqueKey":"required_scope","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","required_scope":"\u003cstring>"}}},"exampleType":"generated"}},"description":"The token lacks the scope this endpoint requires (`required_scope` is returned). Presenting a runtime `op-…` key instead of a management `op-mak-…` token also lands here.","exampleType":"generated"},"35101b89-efa1-4b0a-9535-baaa146c23f7":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"description":"No such resource in the calling organization. A resource belonging to another organization is indistinguishable from one that does not exist.","exampleType":"generated"},"f75d90be-ebb5-45ee-8e15-8861e0c06f1d":{"content":{"application/json":{"schema":{"properties":{"code":{"description":"Present on the file-deletion refusal.","type":"string","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"file_count":{"description":"Present on the file-deletion refusal.","type":"integer","uniqueKey":"file_count","typeLabel":"integer"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","error":"\u003cstring>","file_count":123}}},"exampleType":"generated"}},"description":"Conflicting rule, changed idempotency payload, deleted original rule, policy invariant, or explicit file-deletion acknowledgement required.","exampleType":"generated"},"4cbacc2a-3688-44b5-8a4b-0a0af0a10bc4":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Any value","uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"meta","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":"\u003cunknown>"},"meta":{}}}},"exampleType":"generated"}},"description":"Internal server error","exampleType":"generated"}},"security":{"8a78bcd3-d0e2-4fb8-be73-29909d28cc3d":{"ManagementBearer":{"bearerFormat":"Management API Key","description":"Management API authentication. Pass an `op-mak-…` management token as a Bearer token. Runtime `op-…` API keys are rejected with 403 — they belong on the data-plane endpoints. Mint a management key from the platform UI under Settings → API keys.","scheme":"bearer","type":"http","scopes":[],"schemeName":"ManagementBearer"}}},"servers":{"93719e9c-1d61-42ff-9c97-ff83352b47ba":{"description":"Production","url":"https://api.opper.ai"},"918c44e7-4a54-49d0-907e-d84254aa5dcb":{"description":"Local development","url":"http://localhost:8080"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"Management API Key","description":"Management API authentication. Pass an `op-mak-…` management token as a Bearer token. Runtime `op-…` API keys are rejected with 403 — they belong on the data-plane endpoints. Mint a management key from the platform UI under Settings → API keys.","scheme":"bearer","type":"http","scopes":[],"schemeName":"ManagementBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Management API authentication. Pass an `op-mak-…` management token as a Bearer token. Runtime `op-…` API keys are rejected with 403 — they belong on the data-plane endpoints. Mint a management key from the platform UI under Settings → API keys.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ManagementBearer","name":"Authorization"}],"title":"ManagementBearer"}]},"originalFileLocation":"openapi-v3.json"},"subdomain":"opper","siteName":"Opper","title":"Create a control rule - Opper","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T10:42:21.133Z","gitLastModified":"2026-09-17T07:26:27.000Z","originalFileLocation":"v3-api-reference/management/create-control-rule.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=\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Opper\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_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/opper/QTlMDo19G0sAM5ID/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a control rule - Opper\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Opper\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.opper.ai/v3-api-reference/management/create-control-rule\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://opper.mintlify.app/_mintlify/api/og/v2?division=Management\u0026amp;title=Create+a+control+rule\u0026amp;description=Creates+a+rule+with+a+client-generated+UUID.+Setting+enabled+applies+it+immediately.+Read+rules+again+to+inspect+effective+policy.+Requires+the+%60controls%3Awrite%60\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=e522f74b2ac6461676bf5d69ec7ee7ffd4aaf1cb8483a3cca3df99d7584426b5\">\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=\"Create a control rule - Opper\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://opper.mintlify.app/_mintlify/api/og/v2?division=Management\u0026amp;title=Create+a+control+rule\u0026amp;description=Creates+a+rule+with+a+client-generated+UUID.+Setting+enabled+applies+it+immediately.+Read+rules+again+to+inspect+effective+policy.+Requires+the+%60controls%3Awrite%60\u0026amp;theme=2bfe23844db8025c327f2519\u0026amp;signature=e522f74b2ac6461676bf5d69ec7ee7ffd4aaf1cb8483a3cca3df99d7584426b5\">\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/opper/QTlMDo19G0sAM5ID/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Opper\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#14cdcd\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.opper.ai/v3-api-reference/management/create-control-rule\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v3-api-reference/management/create-control-rule.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.opper.ai/#organization\",\"name\":\"Opper\",\"url\":\"https://docs.opper.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/opper/EXrQN6z6604ZsBuP/logo/light.svg?fit=max\u0026auto=format\u0026n=EXrQN6z6604ZsBuP\u0026q=85\u0026s=fd4170c482c6cebc3c20d8f7f7e033f8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.opper.ai#website\",\"name\":\"Opper\",\"url\":\"https://docs.opper.ai\",\"publisher\":{\"@id\":\"https://docs.opper.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule#webpage\",\"url\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule\",\"name\":\"Create a control rule\",\"description\":\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.\",\"dateModified\":\"2026-09-17T07:26:27.000Z\",\"isPartOf\":{\"@id\":\"https://docs.opper.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Platform APIs\",\"item\":\"https://docs.opper.ai/v3-api-reference/generations/list-generations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Management\",\"item\":\"https://docs.opper.ai/v3-api-reference/management/list-projects\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a control rule\",\"item\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule#apireference\",\"headline\":\"Create a control rule\",\"name\":\"Create a control rule\",\"description\":\"Creates a rule with a client-generated UUID. Setting enabled applies it immediately. Read rules again to inspect effective policy. Requires the controls:write scope.\",\"url\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule\",\"mainEntityOfPage\":{\"@id\":\"https://docs.opper.ai/v3-api-reference/management/create-control-rule#webpage\"},\"dateModified\":\"2026-09-17T07:26:27.000Z\",\"publisher\":{\"@id\":\"https://docs.opper.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.opper.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Opper\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Opper","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/overview/about"}]},{"tab":"Cookbook","icon":"github","href":"https://github.com/opper-ai/opper-cookbook"},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Compatibility","pages":[{"group":"OpenAI","expanded":true,"pages":[{"title":"Chat Completions","openapi":"post /v3/compat/chat/completions","href":"/v3-api-reference/compatibility/chat-completions"},{"title":"Responses","openapi":"post /v3/compat/responses","href":"/v3-api-reference/compatibility/create-response"},{"title":"Embeddings","openapi":"post /v3/compat/embeddings","href":"/v3-api-reference/compatibility/create-embeddings"},{"title":"Decisions","openapi":"post /v3/compat/decisions","href":"/v3-api-reference/compatibility/create-decision"},{"title":"List Models","openapi":"get /v3/compat/models","href":"/v3-api-reference/compatibility/list-models"}]},{"group":"Anthropic","expanded":true,"pages":[{"title":"Messages","openapi":"post /v3/compat/v1/messages","href":"/v3-api-reference/compatibility/create-message"},{"title":"Count Tokens","openapi":"post /v3/compat/v1/messages/count_tokens","href":"/v3-api-reference/compatibility/count-message-tokens"}]},{"group":"Google","expanded":true,"pages":[{"title":"Interactions","openapi":"post /v3/compat/v1beta/interactions","href":"/v3-api-reference/compatibility/create-interaction"},{"title":"Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:generateContent","href":"/v3-api-reference/compatibility/generate-content"},{"title":"Stream Generate Content","openapi":"post /v3/compat/v1beta/models/{model}:streamGenerateContent","href":"/v3-api-reference/compatibility/stream-generate-content"},{"title":"Count Tokens","openapi":"post /v3/compat/v1beta/models/{model}:countTokens","href":"/v3-api-reference/compatibility/count-tokens"}]},{"group":"TypeSafe","expanded":true,"pages":[{"title":"System One evaluation","openapi":"post /v3/compat/v1/systemone","href":"/v3-api-reference/compatibility/systemone"}]},{"group":"Other","expanded":true,"pages":[{"title":"OpenResponses","openapi":"post /v3/compat/openresponses","href":"/v3-api-reference/compatibility/openresponses"}]}]},{"group":"Multimodality","pages":[{"group":"Images","pages":[{"title":"Generate an image","openapi":"post /v3/images","href":"/v3-api-reference/images/create-image"},{"title":"List image models","openapi":"get /v3/images/models","href":"/v3-api-reference/images/list-image-models"}]},{"group":"Audio","pages":[{"title":"Generate speech","openapi":"post /v3/audio/speech","href":"/v3-api-reference/audio/create-speech"},{"title":"Transcribe audio","openapi":"post /v3/audio/transcriptions","href":"/v3-api-reference/audio/create-transcription"},{"title":"Generate audio","openapi":"post /v3/audio/generations","href":"/v3-api-reference/audio/create-audio-generation"},{"title":"List audio models","openapi":"get /v3/audio/models","href":"/v3-api-reference/audio/list-audio-models"},{"title":"Create Voice","openapi":"post /v3/audio/voices","href":"/v3-api-reference/audio/create-voice"},{"title":"List Voices","openapi":"get /v3/audio/voices","href":"/v3-api-reference/audio/list-voices"},{"title":"Get Voice","openapi":"get /v3/audio/voices/{id}","href":"/v3-api-reference/audio/get-voice"},{"title":"Delete Voice","openapi":"delete /v3/audio/voices/{id}","href":"/v3-api-reference/audio/delete-voice"}]},{"group":"Video","pages":[{"title":"Generate a video","openapi":"post /v3/videos","href":"/v3-api-reference/video/create-video"},{"title":"List video models","openapi":"get /v3/videos/models","href":"/v3-api-reference/video/list-video-models"}]},{"group":"Rerank","pages":[{"title":"Rerank documents","openapi":"post /v3/rerank","href":"/v3-api-reference/rerank/rerank-documents"}]},{"group":"OCR","pages":[{"title":"Extract text (OCR)","openapi":"post /v3/ocr","href":"/v3-api-reference/ocr/extract-text"},{"title":"List OCR models","openapi":"get /v3/ocr/models","href":"/v3-api-reference/ocr/list-ocr-models"}]}]},{"group":"Files","pages":[{"title":"Upload a file","openapi":"post /v3/files","href":"/v3-api-reference/files/upload-file"},{"title":"List files","openapi":"get /v3/files","href":"/v3-api-reference/files/list-files"},{"title":"Get file metadata","openapi":"get /v3/files/{id}","href":"/v3-api-reference/files/get-file"},{"title":"Get a file download URL","openapi":"get /v3/files/{id}/content","href":"/v3-api-reference/files/get-file-content"},{"title":"Set or clear a file's expiry","openapi":"patch /v3/files/{id}","href":"/v3-api-reference/files/update-file"},{"title":"Delete a file","openapi":"delete /v3/files/{id}","href":"/v3-api-reference/files/delete-file"}]},{"group":"Realtime","pages":[{"title":"Realtime protocol","href":"/v3-api-reference/realtime/protocol"},{"title":"Mint realtime ticket","href":"/v3-api-reference/realtime/create-realtime-session"}]},{"group":"Roundtable","pages":[{"openapi":"post /v3/roundtable","title":"Roundtable","href":"/v3-api-reference/roundtable/create-roundtable"}]},{"group":"Platform APIs","pages":[{"group":"Generations","pages":[{"openapi":"get /v3/generations","title":"List generations","href":"/v3-api-reference/generations/list-generations"},{"openapi":"get /v3/generations/{id}","title":"Get generation","href":"/v3-api-reference/generations/get-generation"},{"openapi":"delete /v3/generations/{id}","title":"Delete generation","href":"/v3-api-reference/generations/delete-generation"}]},{"group":"Management","pages":[{"openapi":"get /management/v1/projects","title":"List projects","href":"/v3-api-reference/management/list-projects"},{"openapi":"post /management/v1/projects","title":"Create a project","href":"/v3-api-reference/management/create-project"},{"openapi":"get /management/v1/projects/{uuid}","title":"Get a project","href":"/v3-api-reference/management/get-project"},{"openapi":"patch /management/v1/projects/{uuid}","title":"Update a project","href":"/v3-api-reference/management/update-project"},{"openapi":"delete /management/v1/projects/{uuid}","title":"Delete a project","href":"/v3-api-reference/management/delete-project"},{"openapi":"get /management/v1/projects/{uuid}/api-keys","title":"List a project's API keys","href":"/v3-api-reference/management/list-api-keys"},{"openapi":"post /management/v1/projects/{uuid}/api-keys","title":"Mint an API key","href":"/v3-api-reference/management/create-api-key"},{"openapi":"delete /management/v1/projects/{uuid}/api-keys/{id}","title":"Delete an API key","href":"/v3-api-reference/management/delete-api-key"},{"openapi":"get /management/v1/members","title":"List members","href":"/v3-api-reference/management/list-members"},{"openapi":"delete /management/v1/members/{user_uuid}","title":"Remove a member","href":"/v3-api-reference/management/remove-member"},{"openapi":"get /management/v1/invites","title":"List invitations","href":"/v3-api-reference/management/list-invites"},{"openapi":"post /management/v1/invites","title":"Invite a member","href":"/v3-api-reference/management/create-invite"},{"openapi":"delete /management/v1/invites/{id}","title":"Revoke an invitation","href":"/v3-api-reference/management/revoke-invite"},{"openapi":"get /management/v1/dynamic-routes","title":"List dynamic routes","href":"/v3-api-reference/management/list-dynamic-routes"},{"openapi":"post /management/v1/dynamic-routes","title":"Create a dynamic route","href":"/v3-api-reference/management/create-dynamic-route"},{"openapi":"get /management/v1/dynamic-routes/{name}","title":"Get a dynamic route","href":"/v3-api-reference/management/get-dynamic-route"},{"openapi":"put /management/v1/dynamic-routes/{name}/draft","title":"Replace the draft","href":"/v3-api-reference/management/update-dynamic-route-draft"},{"openapi":"post /management/v1/dynamic-routes/{name}/deploy","title":"Deploy the draft","href":"/v3-api-reference/management/deploy-dynamic-route"},{"openapi":"post /management/v1/dynamic-routes/{name}/simulate","title":"Simulate a request through the route","href":"/v3-api-reference/management/simulate-dynamic-route"},{"openapi":"get /management/v1/dynamic-routes/{name}/versions","title":"List a route's versions","href":"/v3-api-reference/management/list-dynamic-route-versions"},{"openapi":"get /management/v1/dynamic-routes/{name}/versions/{version_number}","title":"Get a version","href":"/v3-api-reference/management/get-dynamic-route-version"},{"openapi":"post /management/v1/dynamic-routes/{name}/versions/{version_number}/rollback","title":"Roll back to a version","href":"/v3-api-reference/management/rollback-dynamic-route"},{"openapi":"post /management/v1/dynamic-routes/{name}/versions/{version_number}/restore-to-draft","title":"Copy a version into the draft","href":"/v3-api-reference/management/restore-dynamic-route-version-to-draft"},{"openapi":"delete /management/v1/dynamic-routes/{name}","title":"Delete a dynamic route","href":"/v3-api-reference/management/delete-dynamic-route"},{"openapi":"get /management/v1/controls/rules","title":"List control rules","description":"Lists rules in the calling organization. Project filters include inherited organization rules and matching function rules. Allowlist rules include effective_count and parent_allowlist; route rules may include allowed_model_ids. Requires the `controls:read` scope.","href":"/v3-api-reference/management/list-control-rules"},{"openapi":"post /management/v1/controls/rules","title":"Create a control rule","href":"/v3-api-reference/management/create-control-rule"},{"openapi":"patch /management/v1/controls/rules/{uuid}","title":"Update a control rule","description":"Updates name, enabled, config or schema_version; omit fields to keep them and use name:null to clear a name. Config is replaced, not merged. ID, kind and scope are immutable. An empty update is rejected. Requires the `controls:write` scope.","href":"/v3-api-reference/management/update-control-rule"},{"openapi":"delete /management/v1/controls/rules/{uuid}","title":"Delete a control rule","href":"/v3-api-reference/management/delete-control-rule"},{"openapi":"get /management/v1/usage","title":"Get usage and cost","href":"/v3-api-reference/management/get-usage"},{"openapi":"post /management/v1/management-keys/_self/disable","title":"Disable the calling management key","href":"/v3-api-reference/management/disable-management-key"}]},{"group":"Models","pages":[{"openapi":"get /v3/models","title":"List models","href":"/v3-api-reference/models/list-models"}]},{"group":"Spans","pages":[{"openapi":"post /v3/spans","title":"Create span","href":"/v3-api-reference/spans/create-span"},{"openapi":"patch /v3/spans/{id}","title":"Update span","href":"/v3-api-reference/spans/update-span"}]},{"group":"Tools","pages":[{"openapi":"post /v3/tools/web/fetch","title":"Web fetch","href":"/v3-api-reference/tools/web-fetch"},{"openapi":"post /v3/tools/web/search","title":"Web search","href":"/v3-api-reference/tools/web-search"}]},{"group":"System","pages":[{"openapi":"get /health","title":"Health check","href":"/v3-api-reference/system/health-check"},{"openapi":"get /v3/openapi.json","title":"OpenAPI spec (JSON)","href":"/v3-api-reference/system/openapi-spec-json"},{"openapi":"get /v3/openapi.yaml","title":"OpenAPI spec (YAML)","href":"/v3-api-reference/system/openapi-spec-yaml"}]}]}]}]},"title":"Create a control rule - Opper","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}