Skip to main content

Health Scores

Every operation in your API gets a health score from 0 to 100. The score reflects how well-tested, documented, and maintained the operation is, regardless of whether it’s GraphQL or REST.

What gets scored

Each quality module contributes to the score:
OpenAPI response shape validation (validateResponseAgainstSpec in @dino/agents) is available for integrations; default dino scan health scoring for REST leans on rest-fuzzer (and shared modules like error-code-validator when REST calls are made), not a separate CLI module today.

Score breakdown

Per-operation vs aggregate

Per-operation score: Each GraphQL query/mutation or REST path/method gets its own score based on which modules reported issues. Aggregate score: The API-level score is the weighted average across all operations. Operations with more findings pull the average down.

Reading the catalog

When you run dino scanThe output includes scores:

What do scores mean for your team

Don’t aim for 100 on day one. Use observe mode to establish a baseline, then improve incrementally. Scores that go up over time matter.

False positives

Dino’s deterministic engine minimises false positives, but they can happen — especially with unconventional API patterns. If you see an incorrect finding:
  1. Check if the API behaviour is intentional (e.g., an endpoint that should reject all input)
  2. Use --tools to exclude specific modules for that run
  3. File an issue, false positives are our #1 bug priority
Health scores are deterministic. Same API state = same scores. If your score changes, something in your API changed.