feat(protocol): define gateway control envelopes
This commit is contained in:
@@ -335,6 +335,28 @@
|
||||
"encoding": {"type": "string", "const": "utf-8"}
|
||||
}
|
||||
},
|
||||
"ClipboardPolicy": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["client_to_provider_enabled", "provider_to_client_enabled", "max_text_bytes", "max_updates_per_minute"],
|
||||
"properties": {
|
||||
"client_to_provider_enabled": {"type": "boolean"},
|
||||
"provider_to_client_enabled": {"type": "boolean"},
|
||||
"max_text_bytes": {"type": "integer", "minimum": 1, "maximum": 65536},
|
||||
"max_updates_per_minute": {"type": "integer", "minimum": 1, "maximum": 120}
|
||||
}
|
||||
},
|
||||
"GatewayClipboardText": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["direction", "text", "encoding", "loop_token"],
|
||||
"properties": {
|
||||
"direction": {"type": "string", "enum": ["client_to_provider", "provider_to_client"]},
|
||||
"text": {"type": "string", "maxLength": 65536, "x-max-bytes": 65536},
|
||||
"encoding": {"type": "string", "const": "utf-8"},
|
||||
"loop_token": {"type": "string", "minLength": 16, "maxLength": 128}
|
||||
}
|
||||
},
|
||||
"VersionNegotiation": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -438,7 +460,7 @@
|
||||
"ProviderSessionWork": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "expires_at", "provider_profile", "provider_identity", "policy_version_id", "application_id", "client_id", "management_host", "management_port", "stream_host", "stream_port", "client_certificate_pem", "client_private_key_pem", "server_certificate_pem"],
|
||||
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "expires_at", "provider_profile", "provider_identity", "policy_version_id", "application_id", "client_id", "management_host", "management_port", "stream_host", "stream_port", "client_certificate_pem", "client_private_key_pem", "server_certificate_pem", "clipboard_policy", "provider_application_termination_allowed"],
|
||||
"properties": {
|
||||
"version": {"type": "string", "const": "1"},
|
||||
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
|
||||
@@ -456,7 +478,9 @@
|
||||
"stream_port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
||||
"client_certificate_pem": {"type": "string", "minLength": 1, "maxLength": 32768},
|
||||
"client_private_key_pem": {"type": "string", "minLength": 1, "maxLength": 32768},
|
||||
"server_certificate_pem": {"type": "string", "minLength": 1, "maxLength": 32768}
|
||||
"server_certificate_pem": {"type": "string", "minLength": 1, "maxLength": 32768},
|
||||
"clipboard_policy": {"$ref": "#/$defs/ClipboardPolicy"},
|
||||
"provider_application_termination_allowed": {"type": "boolean"}
|
||||
}
|
||||
},
|
||||
"ChannelFrame": {
|
||||
@@ -486,6 +510,19 @@
|
||||
"channels": {"type": "array", "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 64}}
|
||||
}
|
||||
},
|
||||
"GatewayClipboardAudit": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["version", "session_id", "direction", "outcome", "text_bytes", "reason"],
|
||||
"properties": {
|
||||
"version": {"type": "string", "const": "1"},
|
||||
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
|
||||
"direction": {"type": "string", "enum": ["client_to_provider", "provider_to_client"]},
|
||||
"outcome": {"type": "string", "enum": ["forwarded", "suppressed", "rejected"]},
|
||||
"text_bytes": {"type": "integer", "minimum": 0, "maximum": 65536},
|
||||
"reason": {"type": "string", "enum": ["forwarded", "loop", "policy", "rate", "provider", "malformed"]}
|
||||
}
|
||||
},
|
||||
"StableError": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
|
||||
Reference in New Issue
Block a user