Back to blog
Guides & Tutorials

Reva: Validate requests with OpenAPI in Node.js

Validating API requests shouldn't be a hassle. Why write validation code by hand when we have OpenAPI documents that describe every endpoint? To address this problem we built Reva, a simple Node.js request validator based on OpenAPI.

Elias MeireElias Meire

Elias Meire

2 min read
Reva: Validate requests with OpenAPI in Node.js

Validating API requests shouldn't be a hassle. Why write validation code by hand when we have OpenAPI documents that describe every endpoint? To address this problem we built Reva, a simple Node.js request validator based on OpenAPI.

As an API-first company, we try to deliver the best developer experience possible with our APIs. API validation has a huge role to play in DX. Developers should get immediate and precise feedback when their requests aren't valid. Reva leverages our public OpenAPI specifications to do exactly that.

Here are some highlights of @apideck/reva

  • Complete: Reva validates all OpenAPI parameter types and request body
  • 😄 Human-readable error messages powered by our better-ajv-errors package.
  • 🧩 Flexible: works with any Node.js framework and serverless provider
  • 🪶 Small footprint: < 50kB
  • 👩‍💻 High quality TypeScript definitions

Ready to try it out? Install Reva through npm.

npm i @apideck/reva

Using Reva

After installing Reva, import the Reva class, and create a new instance.

To validate a request you need a request object and an OpenAPI operation. No need to load a complete OpenAPI document to validate a single endpoint.

A request can have the following properties: body, queryParameters, pathParameters and headers. None of them are required. You can, for example, use Reva to only validate query parameters.

import { Reva } from '@apideck/reva';

const reva = new Reva();

const result = reva.validate({
  operation, // OpenAPI operation
  request: {
    headers: { 'X-My-Header': 'value', Cookie: 'Key=Value' },
    pathParameters; { id: 'ed55e7a3' },
    queryParameters; { search: 'foo' },
    body: {},
  },
});

if (result.ok) {
  // Valid request!
} else {
  // Invalid request, result.errors contains validation errors
  console.log(result.errors);
}

Detailed docs can be found on GitHub.

Feedback welcome

We built Reva to solve our own need for easy validation based on OpenAPI. We hope you find it useful too. Any feedback is welcome, looking forward to collaborate further on GitHub.

Ready to get started?

Scale your integration strategy and deliver the integrations your customers need in record time.

Ready to get started?
Talk to an expert

Trusted by fast-moving product & engineering teams

JobNimbus
Blue Zinc
Drata
Octa
Nmbrs
Apideck Blog

Insights, guides, and updates from Apideck

Discover company news, API insights, and expert blog posts. Explore practical integration guides and tech articles to make the most of Apideck's platform.

The Apideck Field Guide to the Sage Portfolio (A Global Glossary)
AccountingIndustry insights

The Apideck Field Guide to the Sage Portfolio (A Global Glossary)

A complete glossary of every Sage product across regions, from Sage Intacct to Sage 50 France. Identify what your customer actually uses, its API status, and integration viability at a glance.

Bernard Willems

Bernard Willems

8 min read
The Sage API Playbook: Why 'Sage Cloud' Is Not One API
AccountingIndustry insights

The Sage API Playbook: Why 'Sage Cloud' Is Not One API

What looks like one Sage integration quickly turns into six. This article breaks down why “building a Sage integration” is a trap—how each Sage product is a completely different platform, what that really means for your engineering roadmap, and why teams consistently underestimate the cost until it’s too late.

Bernard Willems

Bernard Willems

5 min read
Unified APIs for Fintech: When Point Integrations Stop Scaling
Unified APIIndustry insights

Unified APIs for Fintech: When Point Integrations Stop Scaling

A practical breakdown of when direct fintech integrations stop scaling, how non-linear complexity turns integrations into an engineering bottleneck, and what changes when you move to a unified API layer for reliability, velocity, and maintainability.

Kateryna Poryvay

Kateryna Poryvay

8 min read