2022-08-07 16:43:09 +01:00
{
"metadata" : {
"description" : "JTD schema for SimpleX Chat Protocol messages for chat functions"
},
"definitions" : {
"profile" : {
"properties" : {
"displayName" : {
"type" : "string" ,
"metadata" : {
"format" : "non-empty string without spaces, the first character must not be # or @"
}
},
"fullName" : { "type" : "string" }
},
"optionalProperties" : {
"image" : {
"type" : "string" ,
"metadata" : {
"format" : "data URI format for base64 encoded image"
}
}
},
"additionalProperties" : true
},
"msgContainer" : {
"properties" : {
"content" : { "ref" : "msgContent" }
},
"optionalProperties" : {
"file" : { "ref" : "fileInvitation" },
"quote" : {
"properties" : {
"msgRef" : { "ref" : "msgRef" },
"content" : { "ref" : "msgContent" }
}
},
"forward" : { "type" : "boolean" }
},
"metadata" : {
"comment" : "optional properties `quote` and `forward` are mutually exclusive"
}
},
"msgContent" : {
"discriminator" : "type" ,
"mapping" : {
"text" : {
"properties" : {
"text" : { "type" : "string" , "metadata" : { "comment" : "non-empty" }}
}
},
"link" : {
"properties" : {
"text" : { "type" : "string" , "metadata" : { "comment" : "non-empty" }},
"preview" : { "ref" : "linkPreview" }
}
},
"image" : {
"text" : { "type" : "string" , "metadata" : { "comment" : "can be empty" }},
"image" : { "ref" : "base64url" }
},
"file" : {
"text" : { "type" : "string" , "metadata" : { "comment" : "can be empty" }}
}
},
"metadata" : {
"comment" : "it is RECOMMENDED that the clients support other values in `type` properties showing them as text messages in case `text` property is present"
}
},
"msgRef" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"sentAt" : {
"type" : "string" ,
"metadata" : {
"format" : "ISO8601 UTC time of the message"
}
},
"sent" : { "type" : "boolean" }
},
"optionalProperties" : {
"memberId" : { "ref" : "base64url" },
"metadata" : {
"comment" : "memberId must be present in all group message references, both for sent and received"
2022-08-18 15:17:18 +04:00
}
2022-08-07 16:43:09 +01:00
}
},
"fileInvitation" : {
"properties" : {
"fileName" : { "type" : "string" },
"fileSize" : { "type" : "uint32" }
},
"optionalProperties" : {
"fileConnReq" : { "ref" : "connReqUri" }
}
},
"linkPreview" : {
"properties" : {
"uri" : { "type" : "string" },
"title" : { "type" : "string" },
"description" : { "type" : "string" },
"image" : { "ref" : "base64url" }
}
},
"groupInvitation" : {
"properties" : {
"fromMember" : { "ref" : "memberIdRole" },
"invitedMember" : { "ref" : "memberIdRole" },
"connRequest" : { "ref" : "connReqUri" },
"groupProfile" : { "ref" : "profile" }
2022-11-04 12:00:03 +04:00
},
"optionalProperties" : {
"groupLinkId" : { "ref" : "base64url" },
"metadata" : {
"comment" : "used to identify invitation via group link"
}
2022-08-07 16:43:09 +01:00
}
},
"memberIdRole" : {
"properties" : {
"memberId" : { "ref" : "base64url" },
"memberRole" : { "ref" : "groupMemberRole" }
}
},
"memberInfo" : {
"properties" : {
"memberId" : { "ref" : "base64url" },
"memberRole" : { "ref" : "groupMemberRole" },
"profile" : { "ref" : "profile" }
}
},
"introInvitation" : {
"properties" : {
"groupConnReq" : { "ref" : "connReqUri" },
"directConnReq" : { "ref" : "connReqUri" }
}
},
2022-10-03 09:00:47 +01:00
"groupMemberRole" : {
"enum" : [ "author" , "member" , "admin" , "owner" ]
},
2022-08-07 16:43:09 +01:00
"callInvitation" : {
"properties" : {
"callType" : { "ref" : "callType" }
},
"optionalProperties" : {
"callDhPubKey" : { "ref" : "base64url" }
}
},
"callOffer" : {
"properties" : {
"callType" : { "ref" : "callType" },
"rtcSession" : { "ref" : "webRTCSession" }
},
"optionalProperties" : {
"callDhPubKey" : { "ref" : "base64url" }
}
},
"callAnswer" : {
"properties" : {
"rtcSession" : { "ref" : "webRTCSession" }
}
},
"callExtraInfo" : {
"properties" : {
"rtcExtraInfo" : {
"properties" : {
"rtcIceCandidates" : { "type" : "string" }
2022-08-18 15:17:18 +04:00
}
2022-08-07 16:43:09 +01:00
}
}
},
"callType" : {
"properties" : {
"media" : { "enum" : [ "audio" , "video" ]},
"capabilities" : {
"properties" : {
"encryption" : { "type" : "boolean" }
}
}
}
},
"webRTCSession" : {
"properties" : {
"rtcSession" : { "type" : "string" },
"rtcIceCandidates" : { "type" : "string" }
}
},
"base64url" : {
"type" : "string" ,
"metadata" : {
"format" : "base64url encoded string"
}
},
"connReqUri" : {
"type" : "string" ,
"metadata" : {
"format" : "URI for connection request"
}
}
},
"discriminator" : "event" ,
"mapping" : {
"x.contact" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"profile" : { "ref" : "profile" },
"contactReqId" : { "ref" : "base64url" }
}
}
}
},
"x.info" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"profile" : { "ref" : "profile" }
}
}
2022-08-18 15:17:18 +04:00
}
2022-08-07 16:43:09 +01:00
},
"x.info.probe" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"probe" : { "ref" : "base64url" }
}
}
}
},
"x.info.probe.check" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"probeHash" : { "ref" : "base64url" }
}
}
}
},
"x.info.probe.ok" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"probe" : { "ref" : "base64url" }
}
}
}
},
"x.msg.new" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : { "ref" : "msgContainer" }
}
},
"x.msg.update" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"content" : { "ref" : "msgContent" }
}
}
}
},
"x.msg.del" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"msgId" : { "ref" : "base64url" }
}
}
}
},
"x.file.acpt" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"fileName" : { "type" : "string" }
}
}
}
},
"x.file.acpt.inv" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"fileConnReq" : { "ref" : "connReqUri" },
"fileName" : { "type" : "string" }
}
}
}
},
"x.file.cancel" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"msgId" : { "ref" : "base64url" }
}
}
}
},
"x.grp.inv" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"groupInvitation" : { "ref" : "groupInvitation" }
}
}
}
},
"x.grp.acpt" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberId" : { "ref" : "base64url" }
}
}
}
},
"x.grp.mem.new" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberInfo" : { "ref" : "memberInfo" }
}
}
}
},
"x.grp.mem.intro" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberInfo" : { "ref" : "memberInfo" }
}
}
}
},
"x.grp.mem.inv" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberId" : { "ref" : "base64url" },
"memberIntro" : { "ref" : "introInvitation" }
}
}
}
},
"x.grp.mem.fwd" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberInfo" : { "ref" : "memberInfo" },
"memberIntro" : { "ref" : "introInvitation" }
}
}
}
},
"x.grp.mem.info" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberId" : { "ref" : "base64url" },
"profile" : { "ref" : "profile" }
}
}
}
},
2022-10-03 09:00:47 +01:00
"x.grp.mem.role" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberId" : { "ref" : "base64url" },
"role" : { "ref" : "groupMemberRole" }
}
}
}
},
2022-08-07 16:43:09 +01:00
"x.grp.mem.del" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"memberId" : { "ref" : "base64url" }
}
}
}
},
"x.grp.leave" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {}
}
}
},
"x.grp.del" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {}
}
}
},
"x.grp.info" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"groupProfile" : { "ref" : "profile" }
}
}
}
},
"x.call.inv" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"callId" : { "ref" : "base64url" },
"invitation" : {}
}
}
}
},
"x.call.offer" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"callId" : { "ref" : "base64url" },
"offer" : { "ref" : "callOffer" }
}
}
}
},
"x.call.answer" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"callId" : { "ref" : "base64url" },
"answer" : { "ref" : "callAnswer" }
}
}
}
},
"x.call.extra" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"callId" : { "ref" : "base64url" },
"extra" : { "ref" : "callExtraInfo" }
}
}
}
},
"x.call.end" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {
"callId" : { "ref" : "base64url" }
}
}
}
},
"x.ok" : {
"properties" : {
"msgId" : { "ref" : "base64url" },
"params" : {
"properties" : {}
}
}
}
}
}