feat(protocol): freeze M4 native session RC6 contract

This commit is contained in:
sechmachine
2026-08-13 07:18:03 +07:00
parent 4693102b3c
commit 8eacc4fda9
35 changed files with 5334 additions and 473 deletions
+218 -31
View File
@@ -64,22 +64,24 @@
"AssignedDesktop": {
"type": "object",
"additionalProperties": false,
"required": ["assignment_id", "pool_id", "name", "availability"],
"required": ["assignment_id", "pool_id", "name", "availability", "quality_limits"],
"properties": {
"assignment_id": {"type": "string", "minLength": 1, "maxLength": 128},
"pool_id": {"type": "string", "minLength": 1, "maxLength": 128},
"name": {"type": "string", "minLength": 1, "maxLength": 256},
"availability": {"type": "string", "minLength": 1, "maxLength": 64}
"availability": {"type": "string", "minLength": 1, "maxLength": 64},
"quality_limits": {"$ref": "#/$defs/SessionQualityLimits"}
}
},
"EntitledPool": {
"type": "object",
"additionalProperties": false,
"required": ["pool_id", "name", "assignment_state"],
"required": ["pool_id", "name", "assignment_state", "quality_limits"],
"properties": {
"pool_id": {"type": "string", "minLength": 1, "maxLength": 128},
"name": {"type": "string", "minLength": 1, "maxLength": 256},
"assignment_state": {"type": "string", "minLength": 1, "maxLength": 64}
"assignment_state": {"type": "string", "minLength": 1, "maxLength": 64},
"quality_limits": {"$ref": "#/$defs/SessionQualityLimits"}
}
},
"ResourceList": {
@@ -232,32 +234,105 @@
"fps": {"type": "integer", "minimum": 1, "maximum": 240}
}
},
"VideoProfile": {
"type": "object",
"additionalProperties": false,
"required": ["codec", "bit_depth", "chroma_subsampling", "color_space", "transfer_function"],
"properties": {
"codec": {"type": "string", "enum": ["h264", "hevc", "av1"]},
"bit_depth": {"type": "integer", "minimum": 8, "maximum": 8},
"chroma_subsampling": {"type": "string", "const": "4:2:0"},
"color_space": {"type": "string", "const": "bt709-limited"},
"transfer_function": {"type": "string", "const": "sdr"}
}
},
"AudioProfile": {
"type": "object",
"additionalProperties": false,
"required": ["codec", "sample_rate_hz", "channels", "channel_layout", "packet_duration_ms"],
"properties": {
"codec": {"type": "string", "const": "opus"},
"sample_rate_hz": {"type": "integer", "minimum": 48000, "maximum": 48000},
"channels": {"type": "integer", "minimum": 2, "maximum": 2},
"channel_layout": {"type": "string", "const": "stereo"},
"packet_duration_ms": {"type": "integer", "minimum": 5, "maximum": 5}
}
},
"BitratePreference": {
"type": "object",
"additionalProperties": false,
"required": ["mode"],
"properties": {
"mode": {"type": "string", "enum": ["auto", "explicit"]},
"target_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000, "x-optional-pointer": true}
}
},
"SessionQualityLimits": {
"type": "object",
"additionalProperties": false,
"required": ["policy_version_id", "policy_display_limit", "selectable_display_maximum", "display_limit_override", "bitrate_minimum_kbps", "bitrate_target_kbps", "bitrate_maximum_kbps"],
"properties": {
"policy_version_id": {"type": "string", "minLength": 1, "maxLength": 128},
"policy_display_limit": {"$ref": "#/$defs/DisplayMode"},
"selectable_display_maximum": {"$ref": "#/$defs/DisplayMode"},
"display_limit_override": {"type": "boolean"},
"bitrate_minimum_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"bitrate_target_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"bitrate_maximum_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000}
}
},
"SessionAdjustment": {
"type": "object",
"additionalProperties": false,
"required": ["display_reason", "bitrate_reason"],
"properties": {
"display_reason": {"type": "string", "enum": ["none", "policy_clamp", "direct_entitlement_override"]},
"bitrate_reason": {"type": "string", "enum": ["none", "policy_default", "session_ceiling_clamp", "aggregate_capacity_clamp"]}
}
},
"SelectedSessionDescriptor": {
"type": "object",
"additionalProperties": false,
"required": ["video_profile", "audio_profile", "display_mode", "bitrate_target_kbps", "bitrate_maximum_kbps", "adjustment", "media_timestamp_basis"],
"properties": {
"video_profile": {"$ref": "#/$defs/VideoProfile"},
"audio_profile": {"$ref": "#/$defs/AudioProfile"},
"display_mode": {"$ref": "#/$defs/DisplayMode"},
"bitrate_target_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"bitrate_maximum_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"adjustment": {"$ref": "#/$defs/SessionAdjustment"},
"media_timestamp_basis": {"type": "string", "const": "gateway-send-wall-clock-ms"}
}
},
"SessionRequest": {
"type": "object",
"additionalProperties": false,
"required": ["client_device_id", "device_key_id", "pool_id", "idempotency_key"],
"required": ["client_device_id", "device_key_id", "pool_id", "idempotency_key", "video_profiles", "bitrate_preference"],
"properties": {
"client_device_id": {"type": "string", "minLength": 1, "maxLength": 128},
"device_key_id": {"type": "string", "minLength": 1, "maxLength": 128},
"pool_id": {"type": "string", "minLength": 1, "maxLength": 128},
"idempotency_key": {"type": "string", "minLength": 1, "maxLength": 256},
"video_profiles": {"type": "array", "minItems": 1, "maxItems": 12, "uniqueItems": true, "items": {"$ref": "#/$defs/VideoProfile"}},
"bitrate_preference": {"$ref": "#/$defs/BitratePreference"},
"requested_display_mode": {"$ref": "#/$defs/DisplayMode"}
}
},
"ReconnectRequest": {
"type": "object",
"additionalProperties": false,
"required": ["client_device_id", "device_key_id", "expected_version"],
"required": ["client_device_id", "device_key_id", "expected_version", "display_relaunch_confirmed"],
"properties": {
"client_device_id": {"type": "string", "minLength": 1, "maxLength": 128},
"device_key_id": {"type": "string", "minLength": 1, "maxLength": 128},
"expected_version": {"type": "integer", "minimum": 1}
"expected_version": {"type": "integer", "minimum": 1},
"display_relaunch_confirmed": {"type": "boolean"}
}
},
"BrokerSession": {
"type": "object",
"additionalProperties": false,
"required": ["id", "principal_id", "pool_id", "state", "policy_snapshot", "cleanup_state", "idempotency_key", "correlation_id", "requested_at", "version"],
"required": ["id", "principal_id", "pool_id", "state", "policy_snapshot", "cleanup_state", "idempotency_key", "correlation_id", "requested_at", "version", "requested_video_profiles", "requested_bitrate_preference"],
"properties": {
"id": {"type": "string", "minLength": 1, "maxLength": 128},
"principal_id": {"type": "string", "minLength": 1, "maxLength": 128},
@@ -275,7 +350,10 @@
"ended_at": {"type": "string", "format": "date-time", "maxLength": 64},
"version": {"type": "integer", "minimum": 1},
"requested_display_mode": {"$ref": "#/$defs/DisplayMode"},
"effective_display_mode": {"$ref": "#/$defs/DisplayMode"}
"effective_display_mode": {"$ref": "#/$defs/DisplayMode"},
"requested_video_profiles": {"type": "array", "minItems": 1, "maxItems": 12, "uniqueItems": true, "items": {"$ref": "#/$defs/VideoProfile"}},
"requested_bitrate_preference": {"$ref": "#/$defs/BitratePreference"},
"selected_descriptor": {"$ref": "#/$defs/SelectedSessionDescriptor"}
}
},
"AllocationPolicy": {
@@ -297,7 +375,7 @@
"ConnectionManifest": {
"type": "object",
"additionalProperties": false,
"required": ["version", "purpose", "session_id", "reconnect_sequence", "gateway", "tunnel", "profile", "grant", "correlation_id"],
"required": ["version", "purpose", "session_id", "reconnect_sequence", "gateway", "tunnel", "profile", "grant", "correlation_id", "selected_descriptor"],
"properties": {
"version": {"type": "string", "const": "1"},
"purpose": {"type": "string", "enum": ["launch", "reconnect"]},
@@ -307,7 +385,8 @@
"tunnel": {"$ref": "#/$defs/ManifestTunnel"},
"profile": {"$ref": "#/$defs/ManifestProfile"},
"grant": {"$ref": "#/$defs/GrantReference"},
"correlation_id": {"type": "string", "minLength": 1, "maxLength": 128}
"correlation_id": {"type": "string", "minLength": 1, "maxLength": 128},
"selected_descriptor": {"$ref": "#/$defs/SelectedSessionDescriptor"}
}
},
"ManifestGateway": {
@@ -431,20 +510,14 @@
"CapabilityProfile": {
"type": "object",
"additionalProperties": false,
"required": ["transport", "framing", "media", "audio", "source_rate_control", "client_decode"],
"required": ["transport", "framing", "media", "source_rate_control", "video_profiles", "audio_profiles"],
"properties": {
"transport": {"type": "string", "minLength": 1, "maxLength": 64},
"framing": {"type": "string", "enum": ["datagram-v1", "datagram-v2"]},
"media": {"type": "string", "minLength": 1, "maxLength": 64},
"audio": {"type": "string", "minLength": 1, "maxLength": 64},
"source_rate_control": {"type": "string", "minLength": 1, "maxLength": 64},
"client_decode": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {"type": "string", "enum": ["h264-opus", "hevc-opus"]}
}
"video_profiles": {"type": "array", "minItems": 1, "maxItems": 12, "uniqueItems": true, "items": {"$ref": "#/$defs/VideoProfile"}},
"audio_profiles": {"type": "array", "minItems": 1, "maxItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/AudioProfile"}}
}
},
"GatewayRegistration": {
@@ -538,7 +611,7 @@
"SessionAuthority": {
"type": "object",
"additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "audience", "reconnect_sequence", "expires_at", "capabilities", "provider_profile", "provider_identity"],
"required": ["version", "session_id", "gateway_id", "audience", "reconnect_sequence", "expires_at", "capabilities", "provider_profile", "provider_identity", "selected_descriptor"],
"properties": {
"version": {"type": "string", "const": "1"},
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
@@ -548,13 +621,14 @@
"expires_at": {"type": "string", "format": "date-time", "maxLength": 64},
"capabilities": {"$ref": "#/$defs/CapabilityProfile"},
"provider_profile": {"type": "string", "enum": ["apollo"]},
"provider_identity": {"type": "string", "minLength": 1, "maxLength": 256}
"provider_identity": {"type": "string", "minLength": 1, "maxLength": 256},
"selected_descriptor": {"$ref": "#/$defs/SelectedSessionDescriptor"}
}
},
"ClientSessionAuthority": {
"type": "object",
"additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "audience", "reconnect_sequence", "expires_at", "capabilities"],
"required": ["version", "session_id", "gateway_id", "audience", "reconnect_sequence", "expires_at", "capabilities", "selected_descriptor"],
"properties": {
"version": {"type": "string", "const": "1"},
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
@@ -562,20 +636,133 @@
"audience": {"type": "string", "minLength": 1, "maxLength": 256},
"reconnect_sequence": {"type": "integer", "minimum": 0},
"expires_at": {"type": "string", "format": "date-time", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", "maxLength": 64},
"capabilities": {"$ref": "#/$defs/CapabilityProfile"}
"capabilities": {"$ref": "#/$defs/CapabilityProfile"},
"selected_descriptor": {"$ref": "#/$defs/SelectedSessionDescriptor"}
}
},
"ProviderStreamPolicy": {
"type": "object",
"additionalProperties": false,
"required": ["resolution_width", "resolution_height", "fps", "codec", "bitrate_kbps", "audio_enabled"],
"required": ["video_profile", "audio_profile", "display_mode", "bitrate_target_kbps", "bitrate_maximum_kbps"],
"properties": {
"resolution_width": {"type": "integer", "minimum": 320, "maximum": 16384},
"resolution_height": {"type": "integer", "minimum": 200, "maximum": 8640},
"fps": {"type": "integer", "minimum": 1, "maximum": 240},
"codec": {"type": "string", "enum": ["H264", "HEVC", "AV1"]},
"bitrate_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"audio_enabled": {"type": "boolean"}
"video_profile": {"$ref": "#/$defs/VideoProfile"},
"audio_profile": {"$ref": "#/$defs/AudioProfile"},
"display_mode": {"$ref": "#/$defs/DisplayMode"},
"bitrate_target_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"bitrate_maximum_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000}
}
},
"DisplayLimitOverrideRequest": {
"type": "object",
"additionalProperties": false,
"required": ["allow_display_limit_override", "expected_version"],
"properties": {
"allow_display_limit_override": {"type": "boolean"},
"expected_version": {"type": "integer", "minimum": 1}
}
},
"QualityChangeRequest": {
"type": "object",
"additionalProperties": false,
"required": ["bitrate_preference", "expected_session_version", "expected_policy_version"],
"properties": {
"bitrate_preference": {"$ref": "#/$defs/BitratePreference"},
"expected_session_version": {"type": "integer", "minimum": 1},
"expected_policy_version": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"QualityChangeOperation": {
"type": "object",
"additionalProperties": false,
"required": ["operation_id", "session_id", "revision", "state", "requested_bitrate_preference", "effective_bitrate_kbps", "governing_policy_version", "session_version", "created_at", "deadline_at", "updated_at"],
"properties": {
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36},
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"revision": {"type": "integer", "minimum": 1},
"state": {"type": "string", "enum": ["pending", "applying", "applied", "failed", "timed_out"]},
"requested_bitrate_preference": {"$ref": "#/$defs/BitratePreference"},
"effective_bitrate_kbps": {"type": "integer", "minimum": 100, "maximum": 1000000},
"governing_policy_version": {"type": "string", "minLength": 1, "maxLength": 128},
"session_version": {"type": "integer", "minimum": 1},
"created_at": {"type": "string", "format": "date-time", "maxLength": 64},
"deadline_at": {"type": "string", "format": "date-time", "maxLength": 64},
"updated_at": {"type": "string", "format": "date-time", "maxLength": 64},
"failure_code": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"StopOperation": {
"type": "object",
"additionalProperties": false,
"required": ["operation_id", "session_id", "state", "session_version", "created_at", "deadline_at", "updated_at"],
"properties": {
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36},
"session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"state": {"type": "string", "enum": ["pending", "attempting", "applied", "failed", "termination_unconfirmed"]},
"session_version": {"type": "integer", "minimum": 1},
"created_at": {"type": "string", "format": "date-time", "maxLength": 64},
"deadline_at": {"type": "string", "format": "date-time", "maxLength": 64},
"updated_at": {"type": "string", "format": "date-time", "maxLength": 64},
"failure_code": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"GatewayQualityWorkRequest": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id", "revision"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}, "revision": {"type": "integer", "minimum": 1},
"current_applied_revision": {"type": "integer", "minimum": 0, "x-optional-pointer": true}
}
},
"GatewayQualityWork": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id", "revision", "lease_expires_at", "selected_descriptor"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}, "revision": {"type": "integer", "minimum": 1},
"lease_expires_at": {"type": "string", "format": "date-time", "maxLength": 64}, "selected_descriptor": {"$ref": "#/$defs/SelectedSessionDescriptor"},
"current_applied_revision": {"type": "integer", "minimum": 0, "x-optional-pointer": true}
}
},
"GatewayQualityAck": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id", "revision", "outcome", "current_applied_revision"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}, "revision": {"type": "integer", "minimum": 1},
"outcome": {"type": "string", "enum": ["applied", "not_applied", "uncertain"]}, "current_applied_revision": {"type": "integer", "minimum": 0},
"failure_code": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"GatewayStopWorkRequest": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}
}
},
"GatewayStopWork": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id", "attempt"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}, "attempt": {"type": "integer", "minimum": 1, "maximum": 1}
}
},
"GatewayStopAck": {
"type": "object", "additionalProperties": false,
"required": ["version", "session_id", "gateway_id", "reconnect_sequence", "operation_id", "outcome"],
"properties": {
"version": {"type": "string", "const": "1"}, "session_id": {"type": "string", "minLength": 1, "maxLength": 128},
"gateway_id": {"type": "string", "minLength": 1, "maxLength": 128}, "reconnect_sequence": {"type": "integer", "minimum": 0},
"operation_id": {"type": "string", "format": "uuid", "minLength": 36, "maxLength": 36}, "outcome": {"type": "string", "enum": ["applied", "failed", "termination_unconfirmed"]},
"failure_code": {"type": "string", "minLength": 1, "maxLength": 128}
}
},
"ProviderSessionWork": {