API reference

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.

Was this article helpful?

Need more help? Copy this article's details and paste them into a request on our feedback portal. You may need to sign in.

Open feedback portal

On this page