Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usedino.dev/llms.txt

Use this file to discover all available pages before exploring further.

Discovers your API surface (GraphQL introspection or OpenAPI parsing), runs the shipped quality modules, builds an API Intelligence catalog, and saves a schema snapshot. This is the primary command.

Usage

# Ad-hoc mode (GraphQL — zero tenant file)
dino scan

# Tenant mode (GraphQL and/or REST from tenants/<id>.yml)
dino scan --tenant <id> [flags]
In ad-hoc mode, Dino reads endpoint and protocol from .dino.yml — no --tenant required. The operation registry is built from GraphQL introspection.REST is configured in tenants/<id>.yml (apis[].type: rest, source: openapi, specPath). The --protocol flag does not switch the CLI to REST; use a tenant file instead.

Flags

FlagTypeDefaultDescription
--tenantstringTenant ID (or set in .dino.yml). Optional in ad-hoc GraphQL mode
--envstringTenant defaultTarget environment (must match tenant config)
--format`“markdown""json”`"json"Output format for the Intelligence Report
--quietbooleanfalseSuppress stdout output
--verbosebooleanfalsePrint resolved config defaults and debug info
--fail-on-highbooleanfalseExit 1 when any finding is HIGH or CRITICAL (CI severity gate)
--toolsstring[]All modulesComma-separated: input-fuzzer, response-validator, rbac-matrix, error-code-validator, deprecation-tracker, rate-limit-validator, rest-fuzzer
--modulesstring[]All modulesComma-separated list of modules to scope the scan
--reasoningbooleanfalseEnable AI reasoning strategies (requires DINO_AI_KEY)
--timeoutnumber300000Pipeline timeout in milliseconds
--snapshot-dirstring.dino/snapshotsDirectory to save schema snapshots
--endpointstringFrom configOverride the API endpoint URL
--protocol"graphql""graphql"Ad-hoc GraphQL only. REST uses tenant OpenAPI discovery — see Configuration

Authentication flags

FlagTypeDefaultDescription
--authobject{ enabled: false }Enable authenticated scanning
--ai-keystringDINO_AI_KEY env varAPI key for AI reasoning (Pro tier)
When --reasoning is passed without an API key (via --ai-key or DINO_AI_KEY env var), the command exits with code 1.

Pipeline steps

  1. Discover: GraphQL introspection or OpenAPI 3.0/3.1 parsing; build the operation list
  2. Execute: Run quality modules against discovered operations
  3. Catalogue: Build an API Intelligence catalogue with health scores
  4. Snapshot: Save a schema snapshot for dino diff / dino changelog
  5. Report: Render the catalogue as JSON or Markdown

Quality modules

ModuleWhat it verifies
input-fuzzerInput validation: null injection, type confusion, boundary violations
response-validatorSchema-response conformance: extra fields, execution errors, structural drift
rbac-matrixAuthorisation: auth bypass, permission escalation, missing auth on mutations
rate-limit-validatorRate limiting: missing limits, misconfigured thresholds, header inconsistencies
error-code-validatorError handling: stack trace leaks, information disclosure, inconsistent formats
deprecation-trackerSchema evolution: deprecated field usage, migration progress
rest-fuzzerREST hardening: 19 strategies across six surfaces, type confusion, oversized/deep bodies, injection, path/query manipulation, method confusion, content-type abuse, schema bypasses (enum/format/numeric/string/mass-assignment/readOnly), and header probes (auth bypass, host, IP spoofing, CORS)
For OpenAPI response shape checks (status codes, Content-Type, required fields, extra fields, writeOnly, JSON types), the agents package exposes validateResponseAgainstSpec, useful in custom integrations today; it is not wired as its own dino scan module yet.

Examples

Ad-hoc scan (GraphQL)

echo 'endpoint: https://api.example.com/graphql
protocol: graphql' > .dino.yml

dino scan

Tenant scan with environment

dino scan --tenant acme --env production

REST API scan

dino scan --tenant my-rest-api --env production

JSON output for CI

dino scan --tenant acme --format json --quiet > report.json

CI gate: fail on HIGH or CRITICAL

dino scan --tenant acme --fail-on-high --format json --quiet

Scoped run with specific modules

dino scan --tenant acme --tools input-fuzzer,rbac-matrix,rest-fuzzer --modules users,billing

With AI reasoning

export DINO_AI_KEY="sk-ant-..."
dino scan --tenant acme --reasoning
Use --verbose to see which defaults Dino applied (format, timeout, snapshot directory, concurrency).

RBAC behavior

When authentication is not configured, the rbac-matrix The module is automatically excluded: even if passed via --tools. This prevents false-positive RBAC findings on unauthenticated APIs.

Degraded mode

If all modules fail during a pipeline run, the run completes in degraded mode. The report is generated but contains no test data. Exit code is 1.

Exit codes

CodeMeaning
0Success: pipeline completed and (when --fail-on-high) no HIGH or CRITICAL findings
1Pipeline failed, degraded mode, missing required config, or (when --fail-on-high) at least one HIGH or CRITICAL finding