This repository has been archived by the owner on Mar 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcallmetadata.schema.json
298 lines (298 loc) · 12.2 KB
/
callmetadata.schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://finos.org/schemas/callmetadata.json",
"title": "Call Metadata Standard",
"description": "Meta data supporting dialtone, ringdown, and shoutdown calls",
"type": "object",
"additionalProperties": true,
"definitions": {
"event": {
"type": "object",
"required": [
"state",
"time"
],
"properties": {
"state": {
"type": "string",
"description": "Name of the latest state of the current communication, for example: CallOriginated, CallDelivered, CallEstablished"
},
"time": {
"type": "string",
"format": "date-time",
"description": "Date and time when the state changed for the given participant",
"example": "2016-06-18T08:05:15Z"
}
}
},
"member": {
"name": {
"type": "string",
"example": "Steve Jones",
"description": "Name of the participant communicating"
},
"groupName": {
"type": "string",
"example": "Energy Desk",
"description": "Name of the group for which the participant is representing in the communication"
},
"firmName": {
"type": "string",
"example": "XYZ Firm",
"description": "Name of the participant's firm represented in the communication"
},
"timeZoneOffset": {
"type": "string",
"example": "UTC -05:00:00",
"description": "The UTC timezone offset for the participant"
}
},
"participant": {
"type": "object",
"description": "Specific details about a participant of the call",
"additionalProperties": true,
"properties": {
"member": {
"$ref": "#/definitions/member"
},
"events": {
"type": "array",
"items": {
"$ref": "#/definitions/event"
}
},
"address": {
"type": "string",
"example": "sip:9991234567@voip-provider.net",
"description": "The address of the participant. It can be a URL, a username or any other type of address used to reach this participant."
},
"involvement": {
"type": "string",
"description": "How the participant joined the communication. Did they initiate it(source), receieve a request(destination) or join an ongoing communication(participant)?",
"enum": [
"source",
"destination",
"participant"
]
},
"startTime": {
"type": "string",
"format": "date-time",
"example": "2016-06-18T07:50:30Z",
"description": "Date and time when the participant was requested to participate on the call"
},
"joinTime": {
"type": "string",
"format": "date-time",
"example": "2016-06-18T07:50:30Z",
"description": "Date and time when the participant joined the call"
},
"exitTime": {
"type": "string",
"format": "date-time",
"example": "2016-06-18T08:15:15Z",
"description": "Date and time when the participant exited the call"
}
}
},
"comFile": {
"type": "object",
"required": [
"fileName"
],
"description": "Information about the file associated with the communication record",
"properties": {
"recordID": {
"type": "string",
"description": "The id of the file as stored"
},
"fileName": {
"type": "string",
"example": "sPK-20160517-163415-johnsmith-1165020038-1.m4a",
"description": "The name of the file as stored"
},
"fileLocation": {
"type": "string",
"format": "uri",
"description": "The location of the file"
},
"archiveDate": {
"type": "string",
"format": "date-time",
"description": "The date the file should be removed date-time format"
},
"quality": {
"type": "integer",
"description": "Any data providing quality stats on the file. For example for Voice Recording or Transcription details may be provided defining the suggested qulaity of the file."
},
"checksum": {
"type": "object",
"description": "Checksum of the file used to verify the file integrity. The hash values are compared and, if they match, confirms that the data has not been altered. It can be stored in one of the supported algorithms listed in type enum",
"required": [
"hash"
],
"properties": {
"type": {
"type": "string",
"description": "Hash algorithm used on file checksum.",
"default": "MD5",
"enum": [
"MD5",
"SHA-256",
"SHA-384",
"SHA-512",
"SHA3-224",
"SHA3-256",
"SHA3-384",
"SHA3-512"
]
},
"hash": {
"type": "string",
"example": "ca834d692f1d2ae659c69b72372c39a0",
"description": "Checksum of the file in the selected hash type"
}
}
}
}
}
},
"properties": {
"deviceInfo": {
"type": "object",
"description": "Information about the device that generated this communication record",
"properties": {
"deviceID": {
"type": "string",
"description": "Identifier for the device",
"example": "turret1"
},
"audioInterface": {
"type": "string",
"enum": [
"left handset",
"microphone",
"right handset"
],
"description": "The device as used to handle the communication"
},
"buttonName": {
"type": "string",
"example": "XYZ Energy",
"description": "The name on the consuming app for the connection"
},
"channelID": {
"type": "string",
"example": "C3013-ptSEP003094C3E049",
"description": "Identifier for the resource (channel, extension, ect) "
}
}
},
"comFiles": {
"type": "array",
"items": {
"$ref": "#/definitions/comFile"
}
},
"participants": {
"type": "array",
"description": "List of participant objects describing the other parts on the call",
"items": {
"$ref": "#/definitions/participant"
},
"default": []
},
"linkedData": {
"type": "array",
"items": {
"$ref": "http://finos.org/schemas/callmetadata.json"
}
},
"communicationRecord": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Shoutdown",
"Ringdown",
"Dialtone",
"SMS",
"VoiceRecorder",
"Transcription",
"Audit",
"IM",
"Other"
],
"description": "The type of communication service which is populated in this JSON (dialtone, ringdown, SMS, , etc)"
},
"comUUID": {
"type": "string",
"example": "fd5cee0fe0184142a4397c92cb71f73620170508224148",
"description": "Universally Unique Identifier for this communication for a given participant. Will be unique across all call records."
},
"startTime": {
"type": "string",
"format": "date-time",
"description": "The time when the communication started",
"example": "2016-06-18T07:50:30Z"
},
"endTime": {
"type": "string",
"format": "date-time",
"example": "2016-06-18T07:50:30Z",
"description": "The time when the communication terminated"
},
"direction": {
"type": "string",
"enum": [
"outgoing",
"incoming"
],
"description": "Direction of communication establishment",
"example": "outgoing"
},
"universalID": {
"type": "string",
"example": "fd5cee0fe0184142a4397c92cb71f73620170508224148",
"description": "A ID the underlying platform may provide to link multiple calls within the system. For example where multiple calls are in conference some systems may link them with a universal call id."
},
"csID": {
"type": "string",
"example": "7551/1",
"description": "The ID generated by the platform managing the communication for the target user."
},
"activeDuration": {
"type": "integer",
"example": 28590,
"description": "The duration the participant was actively engaged in the communication (for example removing hold states), in milliseconds"
},
"state": {
"$ref": "#/definitions/event",
"description": "The state of the communication when the record was generated"
},
"variety": {
"type": "string",
"enum": [
"1-1",
"group"
]
},
"platform": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "cisco",
"description": "The actual platform used for example telephony platforms could be could be Cisco, Avaya, BT ITS, IPC, Ect"
},
"id": {
"type": "string",
"description": "The location / ID of the platform to uniquely identify it."
}
}
}
}
}
}
}