@@ -51,7 +51,14 @@ class MultiChannelChannelListResponseObject(BaseModel):
5151 "protected_namespaces" : (),
5252 }
5353
54- discriminator_value_class_map : Dict [str , str ] = {
54+ # Discriminator's property name (OpenAPI v3) - stored as class variable
55+ __openapi_discriminator_name__ = 'channel'
56+
57+ # Discriminator's mapping (OpenAPI v3) - stored as class variable
58+ __discriminator_value_class_map__ = {
59+ 'MMS' : 'MultiChannelChannelListMMSResponseObject' ,
60+ 'RBM' : 'MultiChannelChannelListRBMResponseObject' ,
61+ 'SMS' : 'MultiChannelChannelListSMSResponseObject'
5562 }
5663
5764 def __init__ (self , * args , ** kwargs ) -> None :
@@ -100,6 +107,20 @@ def from_dict(cls, obj: Dict[str, Any]) -> Self:
100107 def from_json (cls , json_str : str ) -> Self :
101108 """Returns the object represented by the json string"""
102109 instance = cls .model_construct ()
110+ json_obj = json .loads (json_str )
111+
112+ discriminator_value = json_obj .get (cls .__openapi_discriminator_name__ )
113+
114+ if discriminator_value and discriminator_value in cls .__discriminator_value_class_map__ :
115+ class_name = cls .__discriminator_value_class_map__ [discriminator_value ]
116+ target_class = globals ()[class_name ]
117+ try :
118+ instance .actual_instance = target_class .from_json (json_str )
119+ return instance
120+ except (ValidationError , ValueError ) as e :
121+ raise ValueError (f"Failed to deserialize using discriminator '{ discriminator_value } ' -> { class_name } : { str (e )} " )
122+
123+ # Fallback: try all schemas if discriminator not found or failed
103124 error_messages = []
104125 # anyof_schema_1_validator: Optional[MultiChannelChannelListRBMResponseObject] = None
105126 try :
0 commit comments