| ; Open Screen protocol spec: https://webscreens.github.io/openscreenprotocol/#appendix-a |
| ; CDDL spec: https://tools.ietf.org/html/draft-ietf-cbor-cddl-08 |
| |
| ; type key 10 |
| agent-info-request = { |
| request |
| } |
| |
| ; type key 11 |
| agent-info-response = { |
| response |
| 1: agent-info ; agent-info |
| } |
| |
| agent-info = { |
| 0: text ; friendly-name |
| 1: text ; model-name |
| ; ... |
| } |
| |
| ; type key 12 |
| agent-status-request = { |
| request |
| ? 1: status ; status |
| } |
| |
| ; type key 13 |
| agent-status-response = { |
| response |
| ? 1: status ; status |
| } |
| |
| request = ( |
| 0: request-id ; request-id |
| ) |
| |
| response = ( |
| 0: request-id ; request-id |
| ) |
| |
| request-id = uint |
| |
| microseconds = uint |
| |
| ; type key 1001 |
| authentication-request = { |
| request |
| 1: authentication-mechanism ; mechanism |
| 2: bytes ; salt |
| 3: uint ; cost |
| } |
| |
| ; type key 1002 |
| authentication-response = { |
| response |
| 1: authentication-response-result ; result |
| 2: bytes ; proof |
| } |
| |
| ; type key 1003 |
| authentication-result = { |
| 1: authentication-result-result ; result |
| } |
| |
| authentication-mechanism = &( |
| hkdf-of-scrypt-of-psk: 1 |
| ) |
| |
| authentication-response-result = &( |
| ok: 0 |
| unknown-error: 1 |
| mechanism-unknown: 2 |
| salt-too-small: 3 |
| cost-too-low: 4 |
| cost-too-high: 5 |
| secret-unknown: 6 |
| calculation-took-too-long: 7 |
| ) |
| |
| authentication-result-result = &( |
| authenticated: 0 |
| unknown-error: 1 |
| proof-invalid: 2 |
| ) |
| |
| ; type key 14 |
| presentation-url-availability-request = { |
| request |
| 1: [* text] ; urls |
| 2: microseconds ; watch-duration |
| 3: uint ; watch-id |
| } |
| |
| ; type key 15 |
| presentation-url-availability-response = { |
| response |
| 1: [* url-availability] ; url-availabilities |
| } |
| |
| ; type key 103 |
| presentation-url-availability-event = { |
| 1: uint ; watch-id |
| 2: [* url-availability] ; url-availabilities |
| } |
| |
| ; idea: use HTTP response codes? |
| url-availability = &( |
| available: 0 |
| unavailable: 1 |
| invalid: 10 |
| ) |
| |
| ; type key 104 |
| presentation-start-request = { |
| request |
| 1: text ; presentation-id |
| 2: text ; url |
| 3: [* http-header] ; headers |
| } |
| |
| http-header = [ |
| key: text |
| value: text |
| ] |
| |
| ; type key 105 |
| presentation-start-response = { |
| response |
| 1: &result ; result |
| 2: uint ; connection-id |
| } |
| |
| ; type key 106 |
| presentation-termination-request = { |
| request |
| 1: text ; presentation-id |
| 2: &( |
| controller-called-terminate: 10 |
| user-terminated-via-controller: 11 |
| unknown: 255 |
| ) |
| ; reason |
| } |
| |
| ; type key 107 |
| presentation-termination-response = { |
| response |
| 1: &result ; result |
| } |
| |
| ; type key 108 |
| presentation-termination-event = { |
| 1: text ; presentation-id |
| 2: &( |
| receiver-called-terminate: 1 |
| user-terminated-via-receiver: 2 |
| controller-called-terminate: 10 |
| user-terminated-via-controller: 11 |
| receiver-replaced-presentation: 20 |
| receiver-idle-too-long: 30 |
| receiver-attempted-to-navigate: 31 |
| receiver-powering-down: 100 |
| receiver-crashed: 101 |
| unknown: 255 |
| ) ; reason |
| } |
| |
| ; type key 109 |
| presentation-connection-open-request = { |
| request |
| 1: text ; presentation-id |
| 2: text ; url |
| } |
| |
| ; type key 110 |
| presentation-connection-open-response = { |
| response |
| 1: &result ; result |
| 2: uint; connection-id |
| } |
| |
| ; type key 111 |
| presentation-connection-close-request = { |
| request |
| 1: uint ; connection-id |
| } |
| |
| ; type key 112 |
| presentation-connection-close-response = { |
| response |
| ; TODO(btolsch): Update the spec or revert. |
| 1: &(success: 0, invalid-connection-id: 1) ; result |
| } |
| |
| ; type key 113 |
| presentation-connection-close-event = { |
| 1: uint; connection-id |
| 2: &( |
| close-method-called: 1 |
| connection-object-discarded: 10 |
| unrecoverable-error-while-sending-or-receiving-message: 100 |
| ) ; reason |
| ? 3: text ; error-message |
| } |
| |
| ; type key 16 |
| presentation-connection-message = { |
| 1: uint ; connection-id |
| 2: bytes / text ; message |
| } |
| |
| status = { |
| status: text |
| } |
| |
| result = ( |
| success: 1 |
| invalid-url: 10 |
| invalid-presentation-id: 11 |
| timeout: 100 |
| transient-error: 101 |
| permanent-error: 102 |
| terminating: 103 |
| unknown-error: 199 |
| ) |