git ssb

0+

Piet / ssb-loomio



Tree: f81bab2f5e5f60995b99ed6d9b588e91f0c47d1f

Files: f81bab2f5e5f60995b99ed6d9b588e91f0c47d1f / position / schema / position.js

2579 bytesRaw
1const Validate = require('is-my-json-valid')
2const { msgIdRegex, feedIdRegex, blobIdRegex } = require('ssb-ref')
3const chooseOneDetails = require('./details/chooseOne')
4
5const schema = {
6 $schema: 'http://json-schema.org/schema#',
7 type: 'object',
8 required: ['type', 'poll', 'positionDetails'],
9 properties: {
10 version: {
11 type: 'string',
12 pattern: '^0.1.0$'
13 },
14 type: {
15 type: 'string',
16 pattern: '^position$'
17 },
18 poll: {
19 $ref: '#/definitions/messageId'
20 },
21 text: { type: 'string' },
22 reason: { type: 'string' },
23 positionDetails: {
24 oneOf: [
25 { $ref: '#/definitions/positionDetails/chooseOne' }
26 ]
27 },
28 mentions: {
29 oneOf: [
30 { type: 'null' },
31 {
32 type: 'array',
33 items: {
34 oneOf: [
35 { $ref: '#/definitions/mentions/message' },
36 { $ref: '#/definitions/mentions/feed' },
37 { $ref: '#/definitions/mentions/blob' }
38 ]
39 }
40 }
41 ]
42 },
43 recps: {
44 oneOf: [
45 { type: 'null' },
46 {
47 type: 'array',
48 items: {
49 oneOf: [
50 { $ref: '#/definitions/feedId' },
51 { $ref: '#/definitions/mentions/feed' }
52 ]
53 }
54 }
55 ]
56 }
57 },
58 definitions: {
59
60 positionDetails: {
61 type: 'object',
62 chooseOne: chooseOneDetails
63 },
64 messageId: {
65 type: 'string',
66 pattern: msgIdRegex
67 },
68 rootId: {
69 type: 'string',
70 pattern: msgIdRegex
71 },
72 branchId: {
73 oneOf: [
74 {
75 type: 'string',
76 pattern: msgIdRegex
77 },
78 {
79 type: 'array',
80 items: {
81 type: 'string',
82 pattern: msgIdRegex
83 }
84 }
85 ]
86 },
87 feedId: {
88 type: 'string',
89 pattern: feedIdRegex
90 },
91 blobId: {
92 type: 'string',
93 pattern: blobIdRegex
94 },
95 mentions: {
96 message: {
97 type: 'object',
98 required: ['link'],
99 properties: {
100 link: { $ref: '#/definitions/messageId' }
101 }
102 },
103 feed: {
104 type: 'object',
105 required: ['link', 'name'],
106 properties: {
107 link: { $ref: '#/definitions/feedId' },
108 name: { type: 'string' }
109 }
110 },
111 blob: {
112 type: 'object',
113 required: ['link', 'name'],
114 properties: {
115 link: { $ref: '#/definitions/blobId' },
116 name: { type: 'string' }
117 }
118 }
119 }
120 }
121}
122
123module.exports = schema
124

Built with git-ssb-web