diff --git a/index.bs b/index.bs index c81db24..d522deb 100644 --- a/index.bs +++ b/index.bs @@ -478,6 +478,35 @@ those. A request and a response includes a request ID which is an unsigned integer chosen by the requester. Responses must include the request ID of the request they are associated with. +Type Key Backwards Compatibility +-------------------------------- + +As messages are modified or extended over time, certain rules must be followed +to maintain backwards compatibiilty with agents that understand older versions +of messages. + +1. If a required field is added to or removed from a message (either to/from the +message directly or indirectly through the field of a field), a new type key +must be assigned to the message. Is is effectively a new message and must not +be sent unless the receiving agent is known to understand the new type key. + +1. If an optional field is added to a message (either to the message directly +or indirectly through the field of a field), the type key may remain unchanged +if the behavior of older receiving agents that do not understand the added field +is compatible with newer sending agents that include the field. +Otherwise, a new type key must be assigned. + +1. If an optional field is removed from a message (either from the message +directly or indirectly through the field of a field), the type key may remain +unchanged if the behavior of newer receiving agents that do not understand the +removed field is compatible with older sending agents that include the field. +Otherwise, a new type key must be assigned. + +1. Required fields may not be added or removed from array-based messages, such +as audio-frame. + + + Authentication {#authentication} ================================