Skip to content

Register the quality bar a rubric's promotions must clear

POST
/katara/v1/orgs/{org_id}/environments/{environment_id}/evaluation-rubrics/{asset_id}/thresholds
curl --request POST \
--url https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/evaluation-rubrics/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/thresholds \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \
--header 'X-Katara-CSRF: 1' \
--cookie katara_session=<katara_session> \
--data '{ "policy": { "metric_version": "katara.promotion-human-quality.wilson-bonferroni.v1", "confidence_ppm": 1, "criteria": [ { "criterion_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "min_cases": 1, "min_resolved_cases": 1, "min_label_coverage_ppm": 1, "min_human_pass_rate_ppm": 1, "regression": { "min_paired_cases": 1, "min_pair_coverage_ppm": 1, "max_pass_rate_loss_ppm": 1 } } ] } }'

Available when the evaluation material service is configured. Registers the quality bar this rubric’s promotions are measured against. Requires an organization owner or administrator signed in as a person; API keys, service identities and workloads are refused, because a promotion is declared by the party the bar is applied to. Each call adds a version; recorded versions are never edited or removed, so a declaration that cited one stays readable for as long as its evidence does. Registration is not calibration, scoring or promotion evidence. Preserve the original key after an uncertain response.

org_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
environment_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
asset_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Idempotency-Key
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
X-Katara-CSRF
Allowed value: 1

Browser cookie mutations require value 1 and an allowed Origin. Session bearer clients may omit this header.

X-Katara-Account-ID
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/

Required for cookie-authenticated changes. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.

Media typeapplication/json

The quality bar a rubric is judged against, registered by an organization owner or administrator before any promotion cites it. Registration is append-only: each call adds a version and no version is edited or removed.

object
policy
required
object
metric_version
required
Allowed value: katara.promotion-human-quality.wilson-bonferroni.v1
confidence_ppm
required
integer
>= 1 <= 999999
criteria
required
Array<object>
>= 1 items <= 32 items
object
criterion_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
min_cases
required
integer
>= 1 <= 1000
min_resolved_cases
required
integer
>= 1 <= 1000
min_label_coverage_ppm
required
integer
<= 1000000
min_human_pass_rate_ppm
required
integer
<= 1000000
regression
required
One of:
object
min_paired_cases
required
integer
>= 1 <= 1000
min_pair_coverage_ppm
required
integer
<= 1000000
max_pass_rate_loss_ppm
required
integer
<= 1000000

The bar as it was registered, with the version a declaration cites.

Media typeapplication/json
object
rubric_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
version
required
integer
>= 1 <= 9007199254740991
policy
required
object
metric_version
required
Allowed value: katara.promotion-human-quality.wilson-bonferroni.v1
confidence_ppm
required
integer
>= 1 <= 999999
criteria
required
Array<object>
>= 1 items <= 32 items
object
criterion_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
min_cases
required
integer
>= 1 <= 1000
min_resolved_cases
required
integer
>= 1 <= 1000
min_label_coverage_ppm
required
integer
<= 1000000
min_human_pass_rate_ppm
required
integer
<= 1000000
regression
required
One of:
object
min_paired_cases
required
integer
>= 1 <= 1000
min_pair_coverage_ppm
required
integer
<= 1000000
max_pass_rate_loss_ppm
required
integer
<= 1000000
recorded_by
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
recorded_at
required
string format: date-time
Example
{
"policy": {
"metric_version": "katara.promotion-human-quality.wilson-bonferroni.v1"
}
}

Version, source authority or cookie account changed. Reinspect before a new intent. Preserve the original key to recover an uncertain committed operation.

Request rejected or unavailable.

Media typeapplication/json
object
error
required
object
message
required
string
>= 1 characters <= 500 characters
type
required
string
>= 1 characters <= 100 characters
code
required

Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.

string
>= 1 characters <= 100 characters
param
required

The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.

string | null
request_id
required
string
>= 1 characters <= 100 characters
upstream_status
required
integer | null
action
Allowed values: sign_in reauthenticate request_access review fund retry reconcile refresh support
operation_id
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
snapshot_ref
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Example
{
"error": {
"action": "sign_in"
}
}