python/alibabacloud_opensearch/models.py (866 lines of code) (raw):
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
from Tea.model import TeaModel
from typing import Dict, List, Any
class Config(TeaModel):
def __init__(
self,
endpoint: str = None,
protocol: str = None,
type: str = None,
security_token: str = None,
access_key_id: str = None,
access_key_secret: str = None,
user_agent: str = None,
):
self.endpoint = endpoint
self.protocol = protocol
self.type = type
self.security_token = security_token
self.access_key_id = access_key_id
self.access_key_secret = access_key_secret
self.user_agent = user_agent
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.endpoint is not None:
result['endpoint'] = self.endpoint
if self.protocol is not None:
result['protocol'] = self.protocol
if self.type is not None:
result['type'] = self.type
if self.security_token is not None:
result['securityToken'] = self.security_token
if self.access_key_id is not None:
result['accessKeyId'] = self.access_key_id
if self.access_key_secret is not None:
result['accessKeySecret'] = self.access_key_secret
if self.user_agent is not None:
result['userAgent'] = self.user_agent
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('endpoint') is not None:
self.endpoint = m.get('endpoint')
if m.get('protocol') is not None:
self.protocol = m.get('protocol')
if m.get('type') is not None:
self.type = m.get('type')
if m.get('securityToken') is not None:
self.security_token = m.get('securityToken')
if m.get('accessKeyId') is not None:
self.access_key_id = m.get('accessKeyId')
if m.get('accessKeySecret') is not None:
self.access_key_secret = m.get('accessKeySecret')
if m.get('userAgent') is not None:
self.user_agent = m.get('userAgent')
return self
class SearchQuery(TeaModel):
def __init__(
self,
query: str = None,
fetch_fields: str = None,
qp: str = None,
disable: str = None,
first_rank_name: str = None,
second_rank_name: str = None,
user_id: str = None,
abtest: str = None,
category_prediction: str = None,
raw_query: str = None,
summary: str = None,
):
# 搜索主体,不能为空。主要支持子句有 config子句、query子句、sort子句、filter子句、aggregate子句、distinct子句 、kvpairs子句。
self.query = query
# 表示本次查询需要召回哪些字段值,多个字段之间通过英文分号;分隔,对应控制台中的默认展示字段功能。默认使用全部可展示字段。
self.fetch_fields = fetch_fields
# 指定要使用的查询分析规则,多个规则使用英文逗号,分隔。默认使用已上线规则
self.qp = qp
# 关闭指定已生效的参数功能。
self.disable = disable
# 设置粗排表达式名字。
self.first_rank_name = first_rank_name
# 设置精排表达式名字。
self.second_rank_name = second_rank_name
# 用来标识发起当前搜索请求的终端用户。该值可以设置为下列值,优先级从高到低:1. 终端用户的长登录会员ID;2. 终端用户的移动设备imei标识;3. 终端用户的client_ip
self.user_id = user_id
# 使用A/B Test功能时需要设置该参数。
self.abtest = abtest
# 通过类目预测功能搜索时需要设置该参数。
self.category_prediction = category_prediction
# 终端用户输入的query,用于类目预测相关模型训练。
self.raw_query = raw_query
# 搜索结果摘要配置,可以指定某些字段进行飘红、截断等操作。
self.summary = summary
def validate(self):
self.validate_required(self.query, 'query')
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.query is not None:
result['query'] = self.query
if self.fetch_fields is not None:
result['fetch_fields'] = self.fetch_fields
if self.qp is not None:
result['qp'] = self.qp
if self.disable is not None:
result['disable'] = self.disable
if self.first_rank_name is not None:
result['first_rank_name'] = self.first_rank_name
if self.second_rank_name is not None:
result['second_rank_name'] = self.second_rank_name
if self.user_id is not None:
result['user_id'] = self.user_id
if self.abtest is not None:
result['abtest'] = self.abtest
if self.category_prediction is not None:
result['category_prediction'] = self.category_prediction
if self.raw_query is not None:
result['raw_query'] = self.raw_query
if self.summary is not None:
result['summary'] = self.summary
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('query') is not None:
self.query = m.get('query')
if m.get('fetch_fields') is not None:
self.fetch_fields = m.get('fetch_fields')
if m.get('qp') is not None:
self.qp = m.get('qp')
if m.get('disable') is not None:
self.disable = m.get('disable')
if m.get('first_rank_name') is not None:
self.first_rank_name = m.get('first_rank_name')
if m.get('second_rank_name') is not None:
self.second_rank_name = m.get('second_rank_name')
if m.get('user_id') is not None:
self.user_id = m.get('user_id')
if m.get('abtest') is not None:
self.abtest = m.get('abtest')
if m.get('category_prediction') is not None:
self.category_prediction = m.get('category_prediction')
if m.get('raw_query') is not None:
self.raw_query = m.get('raw_query')
if m.get('summary') is not None:
self.summary = m.get('summary')
return self
class SearchRequestModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
query: SearchQuery = None,
):
# headers
self.headers = headers
# query
self.query = query
def validate(self):
self.validate_required(self.query, 'query')
if self.query:
self.query.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.query is not None:
result['query'] = self.query.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('query') is not None:
temp_model = SearchQuery()
self.query = temp_model.from_map(m['query'])
return self
class SearchResultFacetItems(TeaModel):
def __init__(
self,
value: str = None,
count: int = None,
):
self.value = value
self.count = count
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.value is not None:
result['value'] = self.value
if self.count is not None:
result['count'] = self.count
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('value') is not None:
self.value = m.get('value')
if m.get('count') is not None:
self.count = m.get('count')
return self
class SearchResultFacet(TeaModel):
"""
*\
"""
def __init__(
self,
key: str = None,
items: List[SearchResultFacetItems] = None,
):
self.key = key
self.items = items
def validate(self):
if self.items:
for k in self.items:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.key is not None:
result['key'] = self.key
result['items'] = []
if self.items is not None:
for k in self.items:
result['items'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('key') is not None:
self.key = m.get('key')
self.items = []
if m.get('items') is not None:
for k in m.get('items'):
temp_model = SearchResultFacetItems()
self.items.append(temp_model.from_map(k))
return self
class SearchResult(TeaModel):
"""
实际返回结果,包括查询耗时searchtime、引擎总结果数total、本次请求返回结果数num、本次查询最大返回结果数viewtotal、查询结果items、统计结果facet等信息
"""
def __init__(
self,
searchtime: float = None,
total: int = None,
viewtotal: int = None,
num: int = None,
items: List[dict] = None,
facet: List[SearchResultFacet] = None,
):
# 指引擎耗时,单位为秒。
self.searchtime = searchtime
# total为一次查询(不考虑config子句)引擎中符合条件的结果数(在结果数较多情况下,该值会做优化),一般用来做展示。
self.total = total
# 考虑到性能及相关性,引擎最多会返回viewtotal个结果。如果需要翻页的话,要求start+hit必需要小于viewtotal
self.viewtotal = viewtotal
# num为本次查询请求(受限于config子句的start及hit)实际返回的条目,不会超过hit值。
self.num = num
# 包含查询召回数据信息,其中fields为搜索召回内容。
self.items = items
# 用于存放Aggregate子句返回的信息。
self.facet = facet
def validate(self):
if self.facet:
for k in self.facet:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.searchtime is not None:
result['searchtime'] = self.searchtime
if self.total is not None:
result['total'] = self.total
if self.viewtotal is not None:
result['viewtotal'] = self.viewtotal
if self.num is not None:
result['num'] = self.num
if self.items is not None:
result['items'] = self.items
result['facet'] = []
if self.facet is not None:
for k in self.facet:
result['facet'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('searchtime') is not None:
self.searchtime = m.get('searchtime')
if m.get('total') is not None:
self.total = m.get('total')
if m.get('viewtotal') is not None:
self.viewtotal = m.get('viewtotal')
if m.get('num') is not None:
self.num = m.get('num')
if m.get('items') is not None:
self.items = m.get('items')
self.facet = []
if m.get('facet') is not None:
for k in m.get('facet'):
temp_model = SearchResultFacet()
self.facet.append(temp_model.from_map(k))
return self
class Error(TeaModel):
"""
*\
"""
def __init__(
self,
code: int = None,
message: str = None,
):
# 错误代码
self.code = code
# 错误描述
self.message = message
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.code is not None:
result['code'] = self.code
if self.message is not None:
result['message'] = self.message
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('code') is not None:
self.code = m.get('code')
if m.get('message') is not None:
self.message = m.get('message')
return self
class SearchResponse(TeaModel):
"""
*\
"""
def __init__(
self,
status: str = None,
request_id: str = None,
result: SearchResult = None,
errors: List[Error] = None,
):
self.status = status
self.request_id = request_id
self.result = result
self.errors = errors
def validate(self):
if self.result:
self.result.validate()
if self.errors:
for k in self.errors:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.status is not None:
result['status'] = self.status
if self.request_id is not None:
result['request_id'] = self.request_id
if self.result is not None:
result['result'] = self.result.to_map()
result['errors'] = []
if self.errors is not None:
for k in self.errors:
result['errors'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('status') is not None:
self.status = m.get('status')
if m.get('request_id') is not None:
self.request_id = m.get('request_id')
if m.get('result') is not None:
temp_model = SearchResult()
self.result = temp_model.from_map(m['result'])
self.errors = []
if m.get('errors') is not None:
for k in m.get('errors'):
temp_model = Error()
self.errors.append(temp_model.from_map(k))
return self
class SearchResponseModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: SearchResponse = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
self.body.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.body is not None:
result['body'] = self.body.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('body') is not None:
temp_model = SearchResponse()
self.body = temp_model.from_map(m['body'])
return self
class SuggestQuery(TeaModel):
def __init__(
self,
query: str = None,
hit: int = None,
):
# 搜索关键词(包含中文需进行urlencode编码)
self.query = query
# 下拉提示条数
self.hit = hit
def validate(self):
self.validate_required(self.query, 'query')
if self.hit is not None:
self.validate_maximum(self.hit, 'hit', 10)
self.validate_minimum(self.hit, 'hit', 1)
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.query is not None:
result['query'] = self.query
if self.hit is not None:
result['hit'] = self.hit
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('query') is not None:
self.query = m.get('query')
if m.get('hit') is not None:
self.hit = m.get('hit')
return self
class SuggestRequestModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
query: SuggestQuery = None,
):
# headers
self.headers = headers
# query
self.query = query
def validate(self):
self.validate_required(self.query, 'query')
if self.query:
self.query.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.query is not None:
result['query'] = self.query.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('query') is not None:
temp_model = SuggestQuery()
self.query = temp_model.from_map(m['query'])
return self
class SuggestionResponseSuggestions(TeaModel):
def __init__(
self,
suggestion: str = None,
):
self.suggestion = suggestion
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.suggestion is not None:
result['suggestion'] = self.suggestion
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('suggestion') is not None:
self.suggestion = m.get('suggestion')
return self
class SuggestionResponse(TeaModel):
"""
*\
"""
def __init__(
self,
request_id: str = None,
searchtime: float = None,
suggestions: List[SuggestionResponseSuggestions] = None,
errors: List[Error] = None,
):
self.request_id = request_id
# 引擎查询耗时,单位为秒
self.searchtime = searchtime
self.suggestions = suggestions
self.errors = errors
def validate(self):
if self.suggestions:
for k in self.suggestions:
if k:
k.validate()
if self.errors:
for k in self.errors:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.request_id is not None:
result['request_id'] = self.request_id
if self.searchtime is not None:
result['searchtime'] = self.searchtime
result['suggestions'] = []
if self.suggestions is not None:
for k in self.suggestions:
result['suggestions'].append(k.to_map() if k else None)
result['errors'] = []
if self.errors is not None:
for k in self.errors:
result['errors'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('request_id') is not None:
self.request_id = m.get('request_id')
if m.get('searchtime') is not None:
self.searchtime = m.get('searchtime')
self.suggestions = []
if m.get('suggestions') is not None:
for k in m.get('suggestions'):
temp_model = SuggestionResponseSuggestions()
self.suggestions.append(temp_model.from_map(k))
self.errors = []
if m.get('errors') is not None:
for k in m.get('errors'):
temp_model = Error()
self.errors.append(temp_model.from_map(k))
return self
class SuggestResponseModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: SuggestionResponse = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
self.body.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.body is not None:
result['body'] = self.body.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('body') is not None:
temp_model = SuggestionResponse()
self.body = temp_model.from_map(m['body'])
return self
class Document(TeaModel):
"""
*\
"""
def __init__(
self,
cmd: str = None,
timestamp: int = None,
fields: Dict[str, Any] = None,
):
# 必选字段。定义该文档的操作行为,可以为“add”、“update”、“delete”,标准版不支持“update”。建议一个请求中进行批量更新操作,提高网络交互及处理效率。“add”表示新增文档,如果该主键对应文档已经存在,则执行先“delete”再“add”的操作;“update”表示更新文档,对该主键对应文档进行部分字段更新;“delete”表示删除文档,如果该主键对应文档已经不存在,则认为删除成功。
self.cmd = cmd
# 可选字段。用来记录文档实际发生时间,单位为毫秒。系统会用该时间戳来作为同一主键文档更新顺序的判断标准,该选项仅支持高级版,标准版应用,没有该timestamp选项,若指定该选项,推送会报4007错误码。在没有该timestamp项时,默认以文档发送到OpenSearch的时间作为文档更新时间进行操作。
self.timestamp = timestamp
# 必选字段。要操作的文档内容,主键字段必选,系统所有操作都是通过主键来进行的。对于“delete”只需要提供文档主键即可。
self.fields = fields
def validate(self):
self.validate_required(self.cmd, 'cmd')
self.validate_required(self.fields, 'fields')
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.cmd is not None:
result['cmd'] = self.cmd
if self.timestamp is not None:
result['timestamp'] = self.timestamp
if self.fields is not None:
result['fields'] = self.fields
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('cmd') is not None:
self.cmd = m.get('cmd')
if m.get('timestamp') is not None:
self.timestamp = m.get('timestamp')
if m.get('fields') is not None:
self.fields = m.get('fields')
return self
class PushDocumentRequestModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: List[Document] = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
for k in self.body:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
result['body'] = []
if self.body is not None:
for k in self.body:
result['body'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
self.body = []
if m.get('body') is not None:
for k in m.get('body'):
temp_model = Document()
self.body.append(temp_model.from_map(k))
return self
class Response(TeaModel):
"""
*\
"""
def __init__(
self,
status: str = None,
request_id: str = None,
errors: List[Error] = None,
):
self.status = status
self.request_id = request_id
self.errors = errors
def validate(self):
if self.errors:
for k in self.errors:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.status is not None:
result['status'] = self.status
if self.request_id is not None:
result['request_id'] = self.request_id
result['errors'] = []
if self.errors is not None:
for k in self.errors:
result['errors'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('status') is not None:
self.status = m.get('status')
if m.get('request_id') is not None:
self.request_id = m.get('request_id')
self.errors = []
if m.get('errors') is not None:
for k in m.get('errors'):
temp_model = Error()
self.errors.append(temp_model.from_map(k))
return self
class PushDocumentResponseModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: Response = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
self.body.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.body is not None:
result['body'] = self.body.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('body') is not None:
temp_model = Response()
self.body = temp_model.from_map(m['body'])
return self
class Behavior(TeaModel):
"""
*\
"""
def __init__(
self,
cmd: str = None,
fields: Dict[str, Any] = None,
):
# 必选字段。定义该文档的操作行为,目前仅支持ADD
self.cmd = cmd
# 必选字段。行为数据主体。
self.fields = fields
def validate(self):
self.validate_required(self.cmd, 'cmd')
self.validate_required(self.fields, 'fields')
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.cmd is not None:
result['cmd'] = self.cmd
if self.fields is not None:
result['fields'] = self.fields
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('cmd') is not None:
self.cmd = m.get('cmd')
if m.get('fields') is not None:
self.fields = m.get('fields')
return self
class CollectDataRequestModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: List[Behavior] = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
for k in self.body:
if k:
k.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
result['body'] = []
if self.body is not None:
for k in self.body:
result['body'].append(k.to_map() if k else None)
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
self.body = []
if m.get('body') is not None:
for k in m.get('body'):
temp_model = Behavior()
self.body.append(temp_model.from_map(k))
return self
class CollectDataResponseModel(TeaModel):
def __init__(
self,
headers: Dict[str, str] = None,
body: Response = None,
):
# headers
self.headers = headers
# body
self.body = body
def validate(self):
self.validate_required(self.body, 'body')
if self.body:
self.body.validate()
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.headers is not None:
result['headers'] = self.headers
if self.body is not None:
result['body'] = self.body.to_map()
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('headers') is not None:
self.headers = m.get('headers')
if m.get('body') is not None:
temp_model = Response()
self.body = temp_model.from_map(m['body'])
return self
class SearchResultItemFullJson(TeaModel):
"""
*\
"""
def __init__(
self,
fields: Dict[str, Any] = None,
variable_value: Dict[str, Any] = None,
sort_expr_values: List[int] = None,
):
# 搜索召回内容
self.fields = fields
# 表示自定义参数返回结果,如获取distance距离值,variableValue 节点只有在config子句的format为xml或者fulljson时才能展现出来,json格式默认不展示。
self.variable_value = variable_value
# 表示对应文档排序分。
self.sort_expr_values = sort_expr_values
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.fields is not None:
result['fields'] = self.fields
if self.variable_value is not None:
result['variableValue'] = self.variable_value
if self.sort_expr_values is not None:
result['sortExprValues'] = self.sort_expr_values
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('fields') is not None:
self.fields = m.get('fields')
if m.get('variableValue') is not None:
self.variable_value = m.get('variableValue')
if m.get('sortExprValues') is not None:
self.sort_expr_values = m.get('sortExprValues')
return self
class Event2001Args(TeaModel):
"""
object_id=pk,object_type=ops_search_doc,ops_request_misc=xxx
"""
def __init__(
self,
object_id: str = None,
object_type: str = None,
ops_request_misc: str = None,
):
# 被点击的对象的主键,不能为空,如果通过api上传需要urlencode
self.object_id = object_id
# 必须为ops_search_doc
self.object_type = object_type
# 开放搜索在搜索结果中返回的参数,只要原样设置即可。
self.ops_request_misc = ops_request_misc
def validate(self):
pass
def to_map(self):
_map = super().to_map()
if _map is not None:
return _map
result = dict()
if self.object_id is not None:
result['object_id'] = self.object_id
if self.object_type is not None:
result['object_type'] = self.object_type
if self.ops_request_misc is not None:
result['ops_request_misc'] = self.ops_request_misc
return result
def from_map(self, m: dict = None):
m = m or dict()
if m.get('object_id') is not None:
self.object_id = m.get('object_id')
if m.get('object_type') is not None:
self.object_type = m.get('object_type')
if m.get('ops_request_misc') is not None:
self.ops_request_misc = m.get('ops_request_misc')
return self