# {py:mod}`ros_sugar.ui_node.api_utils` ```{py:module} ros_sugar.ui_node.api_utils ``` ```{autodoc2-docstring} ros_sugar.ui_node.api_utils :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`SameOriginGuard ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.SameOriginGuard :summary: ``` * - {py:obj}`NoFraming ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.NoFraming :summary: ``` * - {py:obj}`ApiKeyGuard ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.ApiKeyGuard :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`topic_schema ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.topic_schema :summary: ``` * - {py:obj}`msg_to_jsonable ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.msg_to_jsonable :summary: ``` * - {py:obj}`content_to_jsonable ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.content_to_jsonable :summary: ``` * - {py:obj}`marker_from_content ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.marker_from_content :summary: ``` * - {py:obj}`name_param ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.name_param :summary: ``` * - {py:obj}`json_body ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.json_body :summary: ``` * - {py:obj}`reject_websocket ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.reject_websocket :summary: ``` * - {py:obj}`stream_at_rate ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.stream_at_rate :summary: ``` * - {py:obj}`stream_pushed ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.stream_pushed :summary: ``` * - {py:obj}`server_config ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.server_config :summary: ``` * - {py:obj}`is_command ` - ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.is_command :summary: ``` ```` ### API ````{py:function} topic_schema(topic) -> typing.Dict[str, typing.Any] :canonical: ros_sugar.ui_node.api_utils.topic_schema ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.topic_schema ``` ```` ````{py:function} msg_to_jsonable(msg: typing.Any) -> typing.Any :canonical: ros_sugar.ui_node.api_utils.msg_to_jsonable ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.msg_to_jsonable ``` ```` ````{py:function} content_to_jsonable(content: typing.Any) -> typing.Any :canonical: ros_sugar.ui_node.api_utils.content_to_jsonable ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.content_to_jsonable ``` ```` ````{py:function} marker_from_content(topic_name: str, type_name: str, content: typing.Any) -> typing.Optional[typing.Dict] :canonical: ros_sugar.ui_node.api_utils.marker_from_content ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.marker_from_content ``` ```` ````{py:function} name_param(conn) -> str :canonical: ros_sugar.ui_node.api_utils.name_param ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.name_param ``` ```` ````{py:function} json_body(request) -> typing.Any :canonical: ros_sugar.ui_node.api_utils.json_body :async: ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.json_body ``` ```` ````{py:function} reject_websocket(websocket, reason: str) -> None :canonical: ros_sugar.ui_node.api_utils.reject_websocket :async: ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.reject_websocket ``` ```` ````{py:function} stream_at_rate(websocket, default_rate, max_rate, sample) -> None :canonical: ros_sugar.ui_node.api_utils.stream_at_rate :async: ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.stream_at_rate ``` ```` ````{py:function} stream_pushed(websocket, subscribe, unsubscribe, sample) -> None :canonical: ros_sugar.ui_node.api_utils.stream_pushed :async: ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.stream_pushed ``` ```` ````{py:function} server_config(app: typing.Any, port: int, certificate: typing.Optional[ros_sugar.ui_node.security.Certificate]) :canonical: ros_sugar.ui_node.api_utils.server_config ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.server_config ``` ```` ````{py:function} is_command(scope, read_streams: typing.Sequence[str]) -> bool :canonical: ros_sugar.ui_node.api_utils.is_command ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.is_command ``` ```` ````{py:class} SameOriginGuard(app, open_streams: typing.Sequence[str] = ()) :canonical: ros_sugar.ui_node.api_utils.SameOriginGuard ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.SameOriginGuard ``` ```` ````{py:class} NoFraming(app) :canonical: ros_sugar.ui_node.api_utils.NoFraming ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.NoFraming ``` ```` ````{py:class} ApiKeyGuard(app, keys: ros_sugar.ui_node.security.ApiKeys, session_key: typing.Optional[str] = None, prefix: str = '/api/', open_paths: typing.Sequence[str] = (), read_streams: typing.Sequence[str] = (), logger: typing.Any = None) :canonical: ros_sugar.ui_node.api_utils.ApiKeyGuard ```{autodoc2-docstring} ros_sugar.ui_node.api_utils.ApiKeyGuard ``` ````