1*3f982cf4SFabien Sanglard; Open Screen protocol spec: https://webscreens.github.io/openscreenprotocol/#appendix-a 2*3f982cf4SFabien Sanglard; CDDL spec: https://tools.ietf.org/html/draft-ietf-cbor-cddl-08 3*3f982cf4SFabien Sanglard 4*3f982cf4SFabien Sanglard; type key 10 5*3f982cf4SFabien Sanglardagent-info-request = { 6*3f982cf4SFabien Sanglard request 7*3f982cf4SFabien Sanglard} 8*3f982cf4SFabien Sanglard 9*3f982cf4SFabien Sanglard; type key 11 10*3f982cf4SFabien Sanglardagent-info-response = { 11*3f982cf4SFabien Sanglard response 12*3f982cf4SFabien Sanglard 1: agent-info ; agent-info 13*3f982cf4SFabien Sanglard} 14*3f982cf4SFabien Sanglard 15*3f982cf4SFabien Sanglardagent-info = { 16*3f982cf4SFabien Sanglard 0: text ; friendly-name 17*3f982cf4SFabien Sanglard 1: text ; model-name 18*3f982cf4SFabien Sanglard ; ... 19*3f982cf4SFabien Sanglard} 20*3f982cf4SFabien Sanglard 21*3f982cf4SFabien Sanglard; type key 12 22*3f982cf4SFabien Sanglardagent-status-request = { 23*3f982cf4SFabien Sanglard request 24*3f982cf4SFabien Sanglard ? 1: status ; status 25*3f982cf4SFabien Sanglard} 26*3f982cf4SFabien Sanglard 27*3f982cf4SFabien Sanglard; type key 13 28*3f982cf4SFabien Sanglardagent-status-response = { 29*3f982cf4SFabien Sanglard response 30*3f982cf4SFabien Sanglard ? 1: status ; status 31*3f982cf4SFabien Sanglard} 32*3f982cf4SFabien Sanglard 33*3f982cf4SFabien Sanglardrequest = ( 34*3f982cf4SFabien Sanglard 0: request-id ; request-id 35*3f982cf4SFabien Sanglard) 36*3f982cf4SFabien Sanglard 37*3f982cf4SFabien Sanglardresponse = ( 38*3f982cf4SFabien Sanglard 0: request-id ; request-id 39*3f982cf4SFabien Sanglard) 40*3f982cf4SFabien Sanglard 41*3f982cf4SFabien Sanglardrequest-id = uint 42*3f982cf4SFabien Sanglard 43*3f982cf4SFabien Sanglardmicroseconds = uint 44*3f982cf4SFabien Sanglard 45*3f982cf4SFabien Sanglard; type key 1001 46*3f982cf4SFabien Sanglardauthentication-request = { 47*3f982cf4SFabien Sanglard request 48*3f982cf4SFabien Sanglard 1: authentication-mechanism ; mechanism 49*3f982cf4SFabien Sanglard 2: bytes ; salt 50*3f982cf4SFabien Sanglard 3: uint ; cost 51*3f982cf4SFabien Sanglard} 52*3f982cf4SFabien Sanglard 53*3f982cf4SFabien Sanglard; type key 1002 54*3f982cf4SFabien Sanglardauthentication-response = { 55*3f982cf4SFabien Sanglard response 56*3f982cf4SFabien Sanglard 1: authentication-response-result ; result 57*3f982cf4SFabien Sanglard 2: bytes ; proof 58*3f982cf4SFabien Sanglard} 59*3f982cf4SFabien Sanglard 60*3f982cf4SFabien Sanglard; type key 1003 61*3f982cf4SFabien Sanglardauthentication-result = { 62*3f982cf4SFabien Sanglard 1: authentication-result-result ; result 63*3f982cf4SFabien Sanglard} 64*3f982cf4SFabien Sanglard 65*3f982cf4SFabien Sanglardauthentication-mechanism = &( 66*3f982cf4SFabien Sanglard hkdf-of-scrypt-of-psk: 1 67*3f982cf4SFabien Sanglard) 68*3f982cf4SFabien Sanglard 69*3f982cf4SFabien Sanglardauthentication-response-result = &( 70*3f982cf4SFabien Sanglard ok: 0 71*3f982cf4SFabien Sanglard unknown-error: 1 72*3f982cf4SFabien Sanglard mechanism-unknown: 2 73*3f982cf4SFabien Sanglard salt-too-small: 3 74*3f982cf4SFabien Sanglard cost-too-low: 4 75*3f982cf4SFabien Sanglard cost-too-high: 5 76*3f982cf4SFabien Sanglard secret-unknown: 6 77*3f982cf4SFabien Sanglard calculation-took-too-long: 7 78*3f982cf4SFabien Sanglard) 79*3f982cf4SFabien Sanglard 80*3f982cf4SFabien Sanglardauthentication-result-result = &( 81*3f982cf4SFabien Sanglard authenticated: 0 82*3f982cf4SFabien Sanglard unknown-error: 1 83*3f982cf4SFabien Sanglard proof-invalid: 2 84*3f982cf4SFabien Sanglard) 85*3f982cf4SFabien Sanglard 86*3f982cf4SFabien Sanglard; type key 14 87*3f982cf4SFabien Sanglardpresentation-url-availability-request = { 88*3f982cf4SFabien Sanglard request 89*3f982cf4SFabien Sanglard 1: [* text] ; urls 90*3f982cf4SFabien Sanglard 2: microseconds ; watch-duration 91*3f982cf4SFabien Sanglard 3: uint ; watch-id 92*3f982cf4SFabien Sanglard} 93*3f982cf4SFabien Sanglard 94*3f982cf4SFabien Sanglard; type key 15 95*3f982cf4SFabien Sanglardpresentation-url-availability-response = { 96*3f982cf4SFabien Sanglard response 97*3f982cf4SFabien Sanglard 1: [* url-availability] ; url-availabilities 98*3f982cf4SFabien Sanglard} 99*3f982cf4SFabien Sanglard 100*3f982cf4SFabien Sanglard; type key 103 101*3f982cf4SFabien Sanglardpresentation-url-availability-event = { 102*3f982cf4SFabien Sanglard 1: uint ; watch-id 103*3f982cf4SFabien Sanglard 2: [* url-availability] ; url-availabilities 104*3f982cf4SFabien Sanglard} 105*3f982cf4SFabien Sanglard 106*3f982cf4SFabien Sanglard; idea: use HTTP response codes? 107*3f982cf4SFabien Sanglardurl-availability = &( 108*3f982cf4SFabien Sanglard available: 0 109*3f982cf4SFabien Sanglard unavailable: 1 110*3f982cf4SFabien Sanglard invalid: 10 111*3f982cf4SFabien Sanglard) 112*3f982cf4SFabien Sanglard 113*3f982cf4SFabien Sanglard; type key 104 114*3f982cf4SFabien Sanglardpresentation-start-request = { 115*3f982cf4SFabien Sanglard request 116*3f982cf4SFabien Sanglard 1: text ; presentation-id 117*3f982cf4SFabien Sanglard 2: text ; url 118*3f982cf4SFabien Sanglard 3: [* http-header] ; headers 119*3f982cf4SFabien Sanglard} 120*3f982cf4SFabien Sanglard 121*3f982cf4SFabien Sanglardhttp-header = [ 122*3f982cf4SFabien Sanglard key: text 123*3f982cf4SFabien Sanglard value: text 124*3f982cf4SFabien Sanglard] 125*3f982cf4SFabien Sanglard 126*3f982cf4SFabien Sanglard; type key 105 127*3f982cf4SFabien Sanglardpresentation-start-response = { 128*3f982cf4SFabien Sanglard response 129*3f982cf4SFabien Sanglard 1: &result ; result 130*3f982cf4SFabien Sanglard 2: uint ; connection-id 131*3f982cf4SFabien Sanglard} 132*3f982cf4SFabien Sanglard 133*3f982cf4SFabien Sanglard; type key 106 134*3f982cf4SFabien Sanglardpresentation-termination-request = { 135*3f982cf4SFabien Sanglard request 136*3f982cf4SFabien Sanglard 1: text ; presentation-id 137*3f982cf4SFabien Sanglard 2: &( 138*3f982cf4SFabien Sanglard controller-called-terminate: 10 139*3f982cf4SFabien Sanglard user-terminated-via-controller: 11 140*3f982cf4SFabien Sanglard unknown: 255 141*3f982cf4SFabien Sanglard ) 142*3f982cf4SFabien Sanglard ; reason 143*3f982cf4SFabien Sanglard} 144*3f982cf4SFabien Sanglard 145*3f982cf4SFabien Sanglard; type key 107 146*3f982cf4SFabien Sanglardpresentation-termination-response = { 147*3f982cf4SFabien Sanglard response 148*3f982cf4SFabien Sanglard 1: &result ; result 149*3f982cf4SFabien Sanglard} 150*3f982cf4SFabien Sanglard 151*3f982cf4SFabien Sanglard; type key 108 152*3f982cf4SFabien Sanglardpresentation-termination-event = { 153*3f982cf4SFabien Sanglard 1: text ; presentation-id 154*3f982cf4SFabien Sanglard 2: &( 155*3f982cf4SFabien Sanglard receiver-called-terminate: 1 156*3f982cf4SFabien Sanglard user-terminated-via-receiver: 2 157*3f982cf4SFabien Sanglard controller-called-terminate: 10 158*3f982cf4SFabien Sanglard user-terminated-via-controller: 11 159*3f982cf4SFabien Sanglard receiver-replaced-presentation: 20 160*3f982cf4SFabien Sanglard receiver-idle-too-long: 30 161*3f982cf4SFabien Sanglard receiver-attempted-to-navigate: 31 162*3f982cf4SFabien Sanglard receiver-powering-down: 100 163*3f982cf4SFabien Sanglard receiver-crashed: 101 164*3f982cf4SFabien Sanglard unknown: 255 165*3f982cf4SFabien Sanglard ) ; reason 166*3f982cf4SFabien Sanglard} 167*3f982cf4SFabien Sanglard 168*3f982cf4SFabien Sanglard; type key 109 169*3f982cf4SFabien Sanglardpresentation-connection-open-request = { 170*3f982cf4SFabien Sanglard request 171*3f982cf4SFabien Sanglard 1: text ; presentation-id 172*3f982cf4SFabien Sanglard 2: text ; url 173*3f982cf4SFabien Sanglard} 174*3f982cf4SFabien Sanglard 175*3f982cf4SFabien Sanglard; type key 110 176*3f982cf4SFabien Sanglardpresentation-connection-open-response = { 177*3f982cf4SFabien Sanglard response 178*3f982cf4SFabien Sanglard 1: &result ; result 179*3f982cf4SFabien Sanglard 2: uint; connection-id 180*3f982cf4SFabien Sanglard} 181*3f982cf4SFabien Sanglard 182*3f982cf4SFabien Sanglard; type key 111 183*3f982cf4SFabien Sanglardpresentation-connection-close-request = { 184*3f982cf4SFabien Sanglard request 185*3f982cf4SFabien Sanglard 1: uint ; connection-id 186*3f982cf4SFabien Sanglard} 187*3f982cf4SFabien Sanglard 188*3f982cf4SFabien Sanglard; type key 112 189*3f982cf4SFabien Sanglardpresentation-connection-close-response = { 190*3f982cf4SFabien Sanglard response 191*3f982cf4SFabien Sanglard ; TODO(btolsch): Update the spec or revert. 192*3f982cf4SFabien Sanglard 1: &(success: 0, invalid-connection-id: 1) ; result 193*3f982cf4SFabien Sanglard} 194*3f982cf4SFabien Sanglard 195*3f982cf4SFabien Sanglard; type key 113 196*3f982cf4SFabien Sanglardpresentation-connection-close-event = { 197*3f982cf4SFabien Sanglard 1: uint; connection-id 198*3f982cf4SFabien Sanglard 2: &( 199*3f982cf4SFabien Sanglard close-method-called: 1 200*3f982cf4SFabien Sanglard connection-object-discarded: 10 201*3f982cf4SFabien Sanglard unrecoverable-error-while-sending-or-receiving-message: 100 202*3f982cf4SFabien Sanglard ) ; reason 203*3f982cf4SFabien Sanglard ? 3: text ; error-message 204*3f982cf4SFabien Sanglard} 205*3f982cf4SFabien Sanglard 206*3f982cf4SFabien Sanglard; type key 16 207*3f982cf4SFabien Sanglardpresentation-connection-message = { 208*3f982cf4SFabien Sanglard 1: uint ; connection-id 209*3f982cf4SFabien Sanglard 2: bytes / text ; message 210*3f982cf4SFabien Sanglard} 211*3f982cf4SFabien Sanglard 212*3f982cf4SFabien Sanglardstatus = { 213*3f982cf4SFabien Sanglard status: text 214*3f982cf4SFabien Sanglard} 215*3f982cf4SFabien Sanglard 216*3f982cf4SFabien Sanglardresult = ( 217*3f982cf4SFabien Sanglard success: 1 218*3f982cf4SFabien Sanglard invalid-url: 10 219*3f982cf4SFabien Sanglard invalid-presentation-id: 11 220*3f982cf4SFabien Sanglard timeout: 100 221*3f982cf4SFabien Sanglard transient-error: 101 222*3f982cf4SFabien Sanglard permanent-error: 102 223*3f982cf4SFabien Sanglard terminating: 103 224*3f982cf4SFabien Sanglard unknown-error: 199 225*3f982cf4SFabien Sanglard) 226