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