跳转到内容

Save model defaults and optional adjudicatorPolicies atomically with account/model-pool CAS; model-role null clears, policy-slot null inherits; copyPlatformDefaults copies both models and policies once

PUT
/v1/model-role-preferences
curl --request PUT \
--url https://api.tansr.com/v1/model-role-preferences \
--header 'Content-Type: application/json' \
--data '{ "expectedRevision": 1, "expectedPolicyRevision": 1, "expectedSelectionRevision": "example", "copyPlatformDefaults": true, "adjudicatorPolicies": { "primary": { "tier": "low", "budgets": { "maxRounds": 1, "maxUsd": "example", "maxCny": "example", "callBudget": 1 }, "escalation": { "mode": "parent" } }, "backup": { "tier": "low", "budgets": { "maxRounds": 1, "maxUsd": "example", "maxCny": "example", "callBudget": 1 }, "escalation": { "mode": "parent" } } }, "preferences": { "main": { "primaryCatalogId": "example", "backupCatalogId": "example" }, "fast": { "primaryCatalogId": "example", "backupCatalogId": "example" }, "adjudicator": { "primaryCatalogId": "example", "backupCatalogId": "example" } }, "candidateCatalogIds": { "main": [ "example" ], "fast": [ "example" ], "adjudicator": [ "example" ] } }'
Media typeapplication/json
object
expectedRevision
required
integer
<= 9007199254740991
expectedPolicyRevision
required
integer
<= 9007199254740991
expectedSelectionRevision
string
/^[a-f0-9]{64}$/
copyPlatformDefaults
boolean
adjudicatorPolicies
object
primary
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
backup
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
preferences
required
object
main
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
fast
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
adjudicator
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
candidateCatalogIds
object
main
required
Any of:
Array<string>
<= 500 items unique items
fast
required
Any of:
Array<string>
<= 500 items unique items
adjudicator
required
Any of:
Array<string>
<= 500 items unique items

Saved preferences

Media typeapplication/json
object
defaultsEnabled
required
boolean
disabledReason
required
Any of:
null
adjudicatorPolicies
required
Any of:
object
primary
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
backup
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
adjudicatorPolicyDefaults
required
object
primary
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
backup
required
Any of:
object
tier
required
Any of:
string
Allowed value: low
budgets
required
object
maxRounds
integer
>= 1 <= 10
maxUsd
string
/^\d+(\.\d{1,6})?$/
maxCny
string
/^\d+(\.\d{1,6})?$/
callBudget
integer
>= 1 <= 10000
escalation
required
object
mode
Any of:
string
Allowed value: parent
adjudicatorPolicyBudgetMode
required
Any of:
string
Allowed value: shared
effectiveAdjudicatorPolicies
required
Any of:
object
primary
required
Any of:
object
profileId
required
string
name
string
modelHandle
string
tier
Any of:
string
Allowed value: low
budgets
object
escalation
object
callBudget
integer
>= 1
locked
boolean
evidenceFingerprint
string
backup
required
Any of:
object
profileId
required
string
name
string
modelHandle
string
tier
Any of:
string
Allowed value: low
budgets
object
escalation
object
callBudget
integer
>= 1
locked
boolean
evidenceFingerprint
string
budgetMode
required
Any of:
string
Allowed value: shared
revision
required
integer
<= 9007199254740991
policyRevision
required
integer
<= 9007199254740991
preferences
required
object
main
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
fast
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
adjudicator
required
Any of:
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
initialization
required
Any of:
null
candidateSource
required
string
Allowed value: owner_pool
unavailable
required
Array<object>
object
catalogId
required
string
>= 1 characters <= 64 characters
handle
required
Any of:
string
displayName
required
Any of:
string
reason
required
Any of:
string
Allowed value: catalog_missing
platformRoles
required
Any of:
object
main
required
object
candidateCatalogIds
required
Array<string>
<= 500 items unique items
default
required
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
fast
required
object
candidateCatalogIds
required
Array<string>
<= 500 items unique items
default
required
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
adjudicator
required
object
candidateCatalogIds
required
Array<string>
<= 500 items unique items
default
required
object
primaryCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
backupCatalogId
required
Any of:
string
>= 1 characters <= 64 characters
available
required
Array<object>
object
catalogId
required
string
>= 1 characters <= 64 characters
handle
required
string
displayName
required
string
kind
required
string
Allowed value: chat
family
required
string
manufacturer
required
Any of:
string
candidateCatalogIds
required
object
main
required
Any of:
Array<string>
<= 500 items unique items
fast
required
Any of:
Array<string>
<= 500 items unique items
adjudicator
required
Any of:
Array<string>
<= 500 items unique items
roleCandidates
required
object
main
required
Array<object>
object
catalogId
required
string
>= 1 characters <= 64 characters
handle
required
string
displayName
required
string
kind
required
string
Allowed value: chat
family
required
string
manufacturer
required
Any of:
string
fast
required
Array<object>
object
catalogId
required
string
>= 1 characters <= 64 characters
handle
required
string
displayName
required
string
kind
required
string
Allowed value: chat
family
required
string
manufacturer
required
Any of:
string
adjudicator
required
Array<object>
object
catalogId
required
string
>= 1 characters <= 64 characters
handle
required
string
displayName
required
string
kind
required
string
Allowed value: chat
family
required
string
manufacturer
required
Any of:
string
modelSelection
required
object
inherited
required
boolean
catalogIds
required
Array<string>
revision
required
string
effective
required
Any of:
object
main
required
object
candidates
required
Array<string>
unique items
primary
required
Any of:
string
backup
required
Any of:
string
source
required
Any of:
string
Allowed value: user
diagnostics
required
Array
unique items
fast
required
object
candidates
required
Array<string>
unique items
primary
required
Any of:
string
backup
required
Any of:
string
source
required
Any of:
string
Allowed value: user
diagnostics
required
Array
unique items
adjudicator
required
object
candidates
required
Array<string>
unique items
primary
required
Any of:
string
backup
required
Any of:
string
source
required
Any of:
string
Allowed value: user
diagnostics
required
Array
unique items
adjudication
required
object
policyEnabled
required
boolean
activeProfileId
required
Any of:
string
profile
required
Any of:
null
selection
required
object
activeProfileId
required
Any of:
string
available
required
Array<object>
object
id
required
string
name
required
string
scope
required
Any of:
string
Allowed value: user
modelHandle
required
Any of:
string
tier
required
Any of:
string
canInherit
required
boolean
appliesToApplications
required
boolean
model
required
object
locked
required
boolean
reason
required
Any of:
null
boundModelHandle
required
Any of:
string
primary
required
Any of:
string
backup
required
Any of:
string
source
required
string
diagnostics
required
Array<string>
budgets
required
object
escalation
required
object
tier
required
Any of:
string
callBudget
required
Any of:
integer
>= 1
evidence
required
object
primary
required
object
modelHandle
required
Any of:
string
app
required
object
protocolState
required
string
Allowed value: not_checked
status
required
Any of:
string
Allowed value: matched
report
required
Any of:
null
coding
required
object
protocolState
required
string
Allowed value: not_checked
status
required
Any of:
string
Allowed value: matched
report
required
Any of:
null
backup
required
object
modelHandle
required
Any of:
string
app
required
object
protocolState
required
string
Allowed value: not_checked
status
required
Any of:
string
Allowed value: matched
report
required
Any of:
null
coding
required
object
protocolState
required
string
Allowed value: not_checked
status
required
Any of:
string
Allowed value: matched
report
required
Any of:
null
Example
{
"disabledReason": "platform_model_roles_not_initialized",
"adjudicatorPolicies": {
"primary": {
"tier": "low",
"escalation": {
"mode": "parent"
}
},
"backup": {
"tier": "low",
"escalation": {
"mode": "parent"
}
}
},
"adjudicatorPolicyDefaults": {
"primary": {
"tier": "low",
"escalation": {
"mode": "parent"
}
},
"backup": {
"tier": "low",
"escalation": {
"mode": "parent"
}
}
},
"adjudicatorPolicyBudgetMode": "shared",
"effectiveAdjudicatorPolicies": {
"primary": {
"tier": "low"
},
"backup": {
"tier": "low"
},
"budgetMode": "shared"
},
"initialization": {
"version": 1,
"source": "starter"
},
"candidateSource": "owner_pool",
"unavailable": [
{
"reason": "catalog_missing"
}
],
"available": [
{
"kind": "chat"
}
],
"roleCandidates": {
"main": [
{
"kind": "chat"
}
],
"fast": [
{
"kind": "chat"
}
],
"adjudicator": [
{
"kind": "chat"
}
]
},
"effective": {
"main": {
"source": "user",
"diagnostics": [
"candidate_unavailable"
]
},
"fast": {
"source": "user",
"diagnostics": [
"candidate_unavailable"
]
},
"adjudicator": {
"source": "user",
"diagnostics": [
"candidate_unavailable"
]
}
},
"adjudication": {
"profile": {
"source": "organization_policy"
},
"selection": {
"available": [
{
"scope": "user"
}
]
},
"model": {
"reason": "fixed_profile_model"
},
"evidence": {
"primary": {
"app": {
"protocolState": "not_checked",
"status": "matched",
"report": {
"protocol": "app"
}
},
"coding": {
"protocolState": "not_checked",
"status": "matched",
"report": {
"protocol": "app"
}
}
},
"backup": {
"app": {
"protocolState": "not_checked",
"status": "matched",
"report": {
"protocol": "app"
}
},
"coding": {
"protocolState": "not_checked",
"status": "matched",
"report": {
"protocol": "app"
}
}
}
}
}
}

Invalid or unauthorized default choice, or model_role_configuration_not_initialized

Media typeapplication/json
object
error
required
object
code
required

错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)

string
Allowed values: adjudicator_not_authorized admin_forbidden admin_key_invalid app_disabled app_ip_denied app_key_invalid approval_self_forbidden asr_not_configured asr_quota_exceeded auth_channel_undelivered bad_request conflict content_blocked context_window_exceeded currency_not_supported device_code_denied device_code_expired device_code_pending device_code_slow_down egress_blocked endpoint_disabled envelope_key_undelivered fence_denied forbidden idempotency_conflict idp_untrusted image_not_supported imagegen_not_configured imagegen_quota_exceeded insufficient_balance internal_error invalid_api_key license_required limit_exceeded liquidation_not_enabled model_not_authorized model_not_found nonce_replayed not_found operation_input_invalid operation_not_configured order_state_invalid org_byok_not_available org_ceiling_exceeded otp_invalid otp_rate_limited pay_amount_mismatch pay_channel_undelivered pay_signature_invalid payload_too_large payment_required plan_apps_exceeded plan_concurrency_exceeded plan_end_users_exceeded plan_gate_unavailable plan_members_exceeded plan_required plan_tier_insufficient policy_locked pool_signing_undelivered preflight_required pricing_guard_tripped principal_required protocol_unsupported quota_exceeded rate_limited refund_not_eligible section_not_deliverable session_archived signature_invalid stream_backpressure token_expired tts_not_configured tts_quota_exceeded unauthorized upstream_connect_timeout upstream_disconnected upstream_error upstream_idle_timeout upstream_outcome_unknown upstream_timeout upstream_total_timeout upstream_ttfb_timeout validation_failed videogen_not_configured videogen_quota_exceeded websearch_not_configured websearch_quota_exceeded
message
required
string
requestId
required
string
detail
object
Example
{
"error": {
"code": "adjudicator_not_authorized"
}
}

Forbidden

Media typeapplication/json
object
error
required
object
code
required

错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)

string
Allowed values: adjudicator_not_authorized admin_forbidden admin_key_invalid app_disabled app_ip_denied app_key_invalid approval_self_forbidden asr_not_configured asr_quota_exceeded auth_channel_undelivered bad_request conflict content_blocked context_window_exceeded currency_not_supported device_code_denied device_code_expired device_code_pending device_code_slow_down egress_blocked endpoint_disabled envelope_key_undelivered fence_denied forbidden idempotency_conflict idp_untrusted image_not_supported imagegen_not_configured imagegen_quota_exceeded insufficient_balance internal_error invalid_api_key license_required limit_exceeded liquidation_not_enabled model_not_authorized model_not_found nonce_replayed not_found operation_input_invalid operation_not_configured order_state_invalid org_byok_not_available org_ceiling_exceeded otp_invalid otp_rate_limited pay_amount_mismatch pay_channel_undelivered pay_signature_invalid payload_too_large payment_required plan_apps_exceeded plan_concurrency_exceeded plan_end_users_exceeded plan_gate_unavailable plan_members_exceeded plan_required plan_tier_insufficient policy_locked pool_signing_undelivered preflight_required pricing_guard_tripped principal_required protocol_unsupported quota_exceeded rate_limited refund_not_eligible section_not_deliverable session_archived signature_invalid stream_backpressure token_expired tts_not_configured tts_quota_exceeded unauthorized upstream_connect_timeout upstream_disconnected upstream_error upstream_idle_timeout upstream_outcome_unknown upstream_timeout upstream_total_timeout upstream_ttfb_timeout validation_failed videogen_not_configured videogen_quota_exceeded websearch_not_configured websearch_quota_exceeded
message
required
string
requestId
required
string
detail
object
Example
{
"error": {
"code": "adjudicator_not_authorized"
}
}

Policy or preferences changed

Media typeapplication/json
object
error
required
object
code
required

错误码注册表单源派生(src/http/errors.ts ERROR_CODES;码稳定,消费方按码翻译)

string
Allowed values: adjudicator_not_authorized admin_forbidden admin_key_invalid app_disabled app_ip_denied app_key_invalid approval_self_forbidden asr_not_configured asr_quota_exceeded auth_channel_undelivered bad_request conflict content_blocked context_window_exceeded currency_not_supported device_code_denied device_code_expired device_code_pending device_code_slow_down egress_blocked endpoint_disabled envelope_key_undelivered fence_denied forbidden idempotency_conflict idp_untrusted image_not_supported imagegen_not_configured imagegen_quota_exceeded insufficient_balance internal_error invalid_api_key license_required limit_exceeded liquidation_not_enabled model_not_authorized model_not_found nonce_replayed not_found operation_input_invalid operation_not_configured order_state_invalid org_byok_not_available org_ceiling_exceeded otp_invalid otp_rate_limited pay_amount_mismatch pay_channel_undelivered pay_signature_invalid payload_too_large payment_required plan_apps_exceeded plan_concurrency_exceeded plan_end_users_exceeded plan_gate_unavailable plan_members_exceeded plan_required plan_tier_insufficient policy_locked pool_signing_undelivered preflight_required pricing_guard_tripped principal_required protocol_unsupported quota_exceeded rate_limited refund_not_eligible section_not_deliverable session_archived signature_invalid stream_backpressure token_expired tts_not_configured tts_quota_exceeded unauthorized upstream_connect_timeout upstream_disconnected upstream_error upstream_idle_timeout upstream_outcome_unknown upstream_timeout upstream_total_timeout upstream_ttfb_timeout validation_failed videogen_not_configured videogen_quota_exceeded websearch_not_configured websearch_quota_exceeded
message
required
string
requestId
required
string
detail
object
Example
{
"error": {
"code": "adjudicator_not_authorized"
}
}