Validate the formula for prio model
POST /prio-models/validate-formula. Parameters, permissions, request and response schemas.
POST /prio-models/validate-formula
Validate the formula for prio model. Requires the REST write token ability. The bearer token selects the Team; a supplied team_id cannot switch tenants. Additional role, entity-policy and plan requirements vary by operation. A Team in blocked billing mode cannot write and receives 402.
Authentication
Use a team API key as Authorization: Bearer YOUR_API_KEY. The token ability and the user’s role must both allow this operation. See authentication.
{
"ability": "write",
"team": "Token-bound Team",
"authorization": "Additional role, entity-policy and plan requirements vary by operation.",
"billing": "Blocked billing mode rejects writes with 402."
}Request body
A request body is required.
application/json
{
"type": "object",
"properties": {
"formula": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"number",
"boolean"
]
},
"weight": {
"type": "number"
}
},
"required": [
"key",
"type",
"weight"
]
},
"minItems": 1
}
},
"required": [
"formula",
"inputs"
],
"title": "ValidatePrioModelFormulaRequest",
"example": {
"formula": "impact * confidence / effort",
"inputs": [
{
"name": "Impact",
"key": "impact",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
},
{
"name": "Confidence",
"key": "confidence",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
},
{
"name": "Effort",
"key": "effort",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
}
]
}
}{
"formula": "impact * confidence / effort",
"inputs": [
{
"name": "Impact",
"key": "impact",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
},
{
"name": "Confidence",
"key": "confidence",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
},
{
"name": "Effort",
"key": "effort",
"type": "number",
"min": 1,
"max": 10,
"weight": 1
}
]
}Example request
curl --request POST 'https://api.example.test/api/prio-models/validate-formula' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"formula":"impact * confidence / effort","inputs":[{"name":"Impact","key":"impact","type":"number","min":1,"max":10,"weight":1},{"name":"Confidence","key":"confidence","type":"number","min":1,"max":10,"weight":1},{"name":"Effort","key":"effort","type":"number","min":1,"max":10,"weight":1}]}'Examples use fictional data. Replace resource IDs and the API host with your environment’s values.
Responses
200
Successful response.
Content type: application/json.
{
"type": "object",
"properties": {
"valid": {
"type": "boolean"
},
"message": {
"type": "string",
"const": "Formula is valid"
},
"sample_result": {
"description": "An arbitrary JSON value retained by a metadata/settings field.",
"oneOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
}
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/JsonValue"
}
}
]
},
"sample_values": {
"type": "object",
"additionalProperties": {
"type": [
"number",
"boolean"
]
}
}
},
"required": [
"valid",
"message",
"sample_result",
"sample_values"
],
"example": {
"valid": true,
"message": "Formula is valid",
"sample_result": 5,
"sample_values": {
"impact": 5,
"confidence": 5,
"effort": 5
}
}
}{
"valid": true,
"message": "Formula is valid",
"sample_result": 5,
"sample_values": {
"impact": 5,
"confidence": 5,
"effort": 5
}
}401
Unauthenticated
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Error overview."
}
},
"required": [
"message"
]
}{
"message": "The request could not be completed."
}402
The Team is in read-only billing mode.
Content type: application/json.
{
"type": "object",
"properties": {
"error": {
"type": "string",
"const": "subscription_required"
},
"mode": {
"type": "string",
"const": "blocked"
},
"message": {
"type": "string",
"example": "Your team is in read-only mode. Update billing to make changes."
},
"grace_period_ends_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"error",
"mode",
"message",
"grace_period_ends_at"
]
}{
"error": "subscription_required",
"mode": "blocked",
"message": "Your team is in read-only mode. Update billing to make changes.",
"grace_period_ends_at": null
}403
Authorization error
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Error overview."
}
},
"required": [
"message"
]
}{
"message": "The request could not be completed."
}422
Validation failed or the expression cannot be evaluated.
Content type: application/json.
{
"anyOf": [
{
"type": "object",
"properties": {
"valid": {
"type": "boolean",
"const": false
},
"message": {
"type": "string"
},
"sample_values": {
"type": "object",
"additionalProperties": {
"type": [
"number",
"boolean"
]
}
}
},
"required": [
"valid",
"message",
"sample_values"
]
},
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Errors overview."
},
"errors": {
"type": "object",
"description": "A detailed description of each field that failed validation.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"message",
"errors"
]
}
]
}{
"valid": false,
"message": "The request could not be completed.",
"sample_values": {}
}429
Rate limit exceeded. Honor Retry-After before retrying.
Response headers:
{
"Retry-After": {
"description": "Seconds before retrying.",
"schema": {
"type": "integer"
}
}
}Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
},
"required": [
"message"
]
}{
"message": "Too Many Attempts."
}See API conventions for error handling, rate limits, pagination, and uploads.