@citibot/schema

1.0.6 • Public • Published

Citibot Schema Documentation

The Citibot Schemas are used for controlling JSON inputs to your database. These schemas insure data being entered meets pre-determined specifications.

Getting Started

Run the following commands in terminal

$ git clone
$ cd schema
$ npm install

Usage

To validate a message, accounts, notification, or webhooks document, you can use these schemas in your api or application.

Here is an example using the ajv module utilizing the message schema:

const Ajv = require('ajv')
const ajv = new Ajv()

const { messageSchema } = require('@citibot/schema')
ajv.addSchema(messageSchema, 'message')
app.post('/messages',
  bodyParser.json(), (req, res) => {
  const message = req.body
  if !(ajv.validate('message', message)) {
    return res.status(500).send(`Invalid Message Document\n ${ajv.errorsText()}`)
  }
  //... do
  res.send({ok: true})
})

Here is an example using the ajv module utilizing the notification schema:

const Ajv = require('ajv')
const ajv = new Ajv()

const { notificationSchema } = require('@citibot/schema')
ajv.addSchema(notificationSchema, 'notification')
app.post('/notifications',
  bodyParser.json(), (req, res) => {
  const notification = req.body
  if !(ajv.validate('notification', notification)) {
    return res.status(500).send(`Invalid Notification Document\n ${ajv.errorsText()}`)
  }
  //... do
  res.send({ok: true})
})

Here is an example using the ajv module utilizing the accounts schema:

const Ajv = require('ajv')
const ajv = new Ajv()

const { accountsSchema } = require('@citibot/schema')
ajv.addSchema(accountsSchema, 'accounts')
app.post('/accounts',
  bodyParser.json(), (req, res) => {
  const account = req.body
  if !(ajv.validate('accounts', account)) {
    return res.status(500).send(`Invalid Account Document\n ${ajv.errorsText()}`)
  }
  //... do
  res.send({ok: true})
})

Here is an example using the ajv module utilizing the webhooks schema:

const Ajv = require('ajv')
const ajv = new Ajv()

const { webhookSchema } = require('@citibot/schema')
ajv.addSchema(webhookSchema, 'webhooks')
app.post('/webhooks',
  bodyParser.json(), (req, res) => {
  const webhook = req.body
  if !(ajv.validate('webhooks', webhook)) {
    return res.status(500).send(`Invalid Webhook Document\n ${ajv.errorsText()}`)
  }
  //... do
  res.send({ok: true})
})

Schemas

Messenger schema

Required fields include:

  • type - [string=message]
    • Example type:'message'
  • from - [string]
  • to - [string]
  • source - [string]
  • message - [string]

Optional fields

  • intent - [string]
  • slots - [array]
  • dateCreated - [date]

Notification schema

Required fields include:

  • type - [string=notification]
    • Example type:'notification'
  • from - [string]
  • to - [string]
  • reply - [string]
  • message - [string]

Optional fields

  • dateCreated - [string]

Accounts schema

Required fields include:

  • type [string=accounts]
    • Example type:'accounts'
  • name - [string]
  • sites - [array]
  • content - [string]
  • description - [string]

Webhooks schema

Required fields include:

  • id [string]
  • idModel - [string]
  • callbackURL - [array]
  • active - [boolean]
  • description - [string]

Testing schemas

npm test

Readme

Keywords

none

Package Sidebar

Install

npm i @citibot/schema

Weekly Downloads

2

Version

1.0.6

License

MIT

Last publish

Collaborators

  • rroyson
  • twilson63