Back to directory
vtex avatar

node-vtex-api

VTEX IO API Client for Node. Read more below about its uses, features, and usage.

Clone repository

git clone https://github.com/vtex/node-vtex-api.git

78

Stars

15

Forks

133

Watchers

License

VTEX IO API Client for Node

This library enables developers to quickly integrate with the VTEX IO APIs and create full fledged node services using VTEX IO.

Build Status

Getting started

For a complete example on using @vtex/api, check out this app: https://github.com/vtex-apps/service-example

The most basic usage is to export a new Service() with your route handlers:

// Import global types
import './globals'

import { Service } from '@vtex/api'

import { clients } from './clients'
import example from './handlers/example'

// Export a service that defines route handlers and client options.
export default new Service({
  clients,
  routes: {
    example,
  },
})

This allows you to define middlewares that receive a Context param which contains all IO Clients in the clients property:

export const example = async (ctx: Context, next: () => Promise<void>) => {
  const {state: {code}, clients: {apps}} = ctx
  console.log('Received code:', code)

  const apps = await apps.listApps()
  
  ctx.status = 200
  ctx.body = apps
  ctx.set('Cache-Control', 'private')

  await next()
}

ctx.clients.apps is an instance of Apps.

Development

  • Install the dependencies: yarn
  • Watch for changes: yarn watch

Development with IO clients

  • Install the dependencies: yarn
  • Link this package: yarn link
  • Watch for changes: yarn watch
  • Move to the app that depends on the changes made on this package: cd ../<your-app>/node
  • Link this package to your app's node_modules: yarn link @vtex/api

Now, when you get a workspace up and running for your app with vtex link, you'll have this package linked as well.

When done developing, don't forget to unlink it from <your-app>/node: yarn unlink @vtex/api

Releases

What's Changed

Fixes npm publish CI by adding custom latest tags by @juliobguedes in #666

Full Changelog: v6.51.1...v6.51.3

What's Changed

Update npm publish pipeline by @filafb in #638 Backport #617 to 6.x: janusCatalogSystem + licenseManager.listBindings by @monteirogc in #665 refactor(metrics): drop metric/status log e...

What's Changed

refactor(metrics): drop metric/status log export by @iagoaraujo in #676

Full Changelog: v7.4.1...v7.4.2