Files
kami-parse-server/src/LiveQuery/RequestSchema.js

177 lines
3.3 KiB
JavaScript

const general = {
title: 'General request schema',
type: 'object',
properties: {
op: {
type: 'string',
enum: ['connect', 'subscribe', 'unsubscribe', 'update'],
},
},
required: ['op'],
};
const connect = {
title: 'Connect operation schema',
type: 'object',
properties: {
op: 'connect',
applicationId: {
type: 'string',
},
javascriptKey: {
type: 'string',
},
masterKey: {
type: 'string',
},
clientKey: {
type: 'string',
},
windowsKey: {
type: 'string',
},
restAPIKey: {
type: 'string',
},
sessionToken: {
type: 'string',
},
installationId: {
type: 'string',
},
},
required: ['op', 'applicationId'],
additionalProperties: false,
};
const subscribe = {
title: 'Subscribe operation schema',
type: 'object',
properties: {
op: 'subscribe',
requestId: {
type: 'number',
},
query: {
title: 'Query field schema',
type: 'object',
properties: {
className: {
type: 'string',
},
where: {
type: 'object',
},
fields: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
keys: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
watch: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
},
required: ['where', 'className'],
additionalProperties: false,
},
sessionToken: {
type: 'string',
},
},
required: ['op', 'requestId', 'query'],
additionalProperties: false,
};
const update = {
title: 'Update operation schema',
type: 'object',
properties: {
op: 'update',
requestId: {
type: 'number',
},
query: {
title: 'Query field schema',
type: 'object',
properties: {
className: {
type: 'string',
},
where: {
type: 'object',
},
fields: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
keys: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
watch: {
type: 'array',
items: {
type: 'string',
},
minItems: 1,
uniqueItems: true,
},
},
required: ['where', 'className'],
additionalProperties: false,
},
sessionToken: {
type: 'string',
},
},
required: ['op', 'requestId', 'query'],
additionalProperties: false,
};
const unsubscribe = {
title: 'Unsubscribe operation schema',
type: 'object',
properties: {
op: 'unsubscribe',
requestId: {
type: 'number',
},
},
required: ['op', 'requestId'],
additionalProperties: false,
};
const RequestSchema = {
general: general,
connect: connect,
subscribe: subscribe,
update: update,
unsubscribe: unsubscribe,
};
export default RequestSchema;