Files: f81bab2f5e5f60995b99ed6d9b588e91f0c47d1f / position / schema / position.js
2579 bytesRaw
1 | const Validate = require('is-my-json-valid') |
2 | const { msgIdRegex, feedIdRegex, blobIdRegex } = require('ssb-ref') |
3 | const chooseOneDetails = require('./details/chooseOne') |
4 | |
5 | const 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 | |
123 | module.exports = schema |
124 |
Built with git-ssb-web