TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Schema Registry API

A simple typescript node-fetch wrapper on the confluent schema-registry api.

This allows calling the api in a promise-based type-safe manner.


yarn add @ovotech/schema-registry-api
import { Schema } from 'avsc';
const schema: Schema = {
  type: 'record',
  name: 'TestSchema',
  fields: [{ name: 'accountId', type: 'string' }],

const subjects = await getSubjects(schemaRegistryUrl);
const newVersion = await addSubjectVersion(schemaRegistryUrl, 'clients', schema);
const foundSchema = await getSchema(schemaRegistryUrl, newVersion.id);

The api rest endpoint are directly translated into functions calling node-fetch:

Function Rest Docs
getSchema(baseUrl: string, id: number) GET /schemas/ids/:id
getSubjects(baseUrl: string) GET /subjects
getSubjectVersions(baseUrl: string, subject: string) GET /subjects/:subject/versions
deleteSubject(baseUrl: string, subject: string) DELETE /subjects/:subject
getSubjectVersionSchema(baseUrl: string, subject: string, version: number) GET /subjects/:subject/versions/:version/schema
addSubjectVersion(baseUrl: string, subject: string, schema: Schema) POST /subjects/:subject/versions
checkSubjectRegistered(baseUrl: string, subject: string, schema: Schema) POST /subjects/:subject
deleteSubjectVersion(baseUrl: string, subject: string, version: number) DELETE /subjects/:subject/versions/:version
`checkCompatibility( baseUrl: string, subject: string, version: number 'latest', schema: Schema)`

But there are also to slightly higher level functions:

idToSchema(baseUrl: string, id: number) - return a schema as a parsed Schema object from a schema id. schemaToId(baseUrl: string, subject: string, schema: Schema) - return the id of a schema object. This will check for an existence of a schema within the given subject, and create a schema version if one was not found.

Running the tests

The tests require a running schema registry service, and we're using docker compose to start it, alongside kafka and zookeeper, required by the service.

So in the project's parent directory run:

docker-compose up

Then you can run the tests with:

yarn test

Coding style (linting, etc) tests

Style is maintained with prettier and tslint

yarn lint


Deployment is preferment by lerna automatically on merge / push to master, but you'll need to bump the package version numbers yourself. Only updated packages with newer versions will be pushed to the npm registry.


Have a bug? File an issue with a simple example that reproduces this so we can take a look & confirm.

Want to make a change? Submit a PR, explain why it's useful, and make sure you've updated the docs (this file) and the tests (see test folder).


This project is licensed under Apache 2 - see the LICENSE file for details




Package Sidebar


npm i @ovotech/schema-registry-api

Weekly Downloads






Unpacked Size

23.1 kB

Total Files


Last publish


  • ovox
  • oep-accounts-bot
  • ovo.backstage.admins
  • bookings-team
  • orion-bot
  • bizval-bot
  • oeptariffs
  • props
  • metering-reads-health-bot
  • ovotech-identity
  • paceteamkaluza
  • trading-and-dispatch
  • retail-payg-tech
  • accrecovo
  • ovo.trading.tech
  • qe-team
  • ovotech-smart-thermostat
  • rise-team
  • engagement-insights
  • myovo-self-serve-service-account
  • mars-rover
  • ape-team
  • kaluza-devex
  • ohs-aurora
  • kaluza-rnr
  • ipa-bot
  • kawbot
  • data.discovery.ovo
  • ovotech-sg
  • ovotech-qs
  • ovoenergyapps
  • homemoves
  • ovo-oot-bot
  • cp-ui-tooling
  • ovo-bit-tech
  • sir_hiss