[docs]classTopic(QueryComponentMixin):model_config=ConfigDict(populate_by_name=True,alias_generator=to_camel)id:strname:strvolume:Optional[int]=Nonedescription:Optional[str]=Field(validation_alias="description",default=None)# Disabled, but enabled for watchlists?topic:Optional[str]topic_group:Optional[str]entity_type:Literal["TOPC"]=Field(default="TOPC")# Disabled fields.# topic_type: str = Field(validation_alias="group3")# topic_subtype: str = Field(validation_alias="group4")# topic_role: str = Field(validation_alias="group5")
[docs]@model_validator(mode="before")@classmethoddefapply_second_alias_generator(cls,values):""" Applied before validating to replace some alias in the input @values so we can make the model in 3 ways: snake_case/camel_case/alias. This is required because not all endpoints are resolving the groupN into the correct field name. """values=values.copy()# keep original input unmutated for Unionsautosuggest_validation_alias_map={"key":"id","group1":"topic","group2":"topicGroup",}forkeyinautosuggest_validation_alias_map:ifkeyinvalues:values[autosuggest_validation_alias_map[key]]=values.pop(key)returnvalues