Metadata-Version: 2.4
Name: janus-nosip-plugin
Version: 3.0.0
Summary: Typed async client for the Janus NoSIP plugin
Author-email: Leydotpy <leydotpy.dev@gmail.com>
License-Expression: MIT
Project-URL: Documentation, https://janus.conf.meetecho.com/docs/nosip.html
Project-URL: JanusGateway, https://janus.conf.meetecho.com/
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: janus-api-core<4,>=3
Requires-Dist: pydantic<3,>=2.12
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: build>=1.2; extra == "test"

# janus-nosip-plugin

Typed async bindings for `janus.plugin.nosip`, packaged separately from
`janus-api-core` and every other named plugin.

NoSIP bridges WebRTC media to plain RTP while the application owns external
signalling. The API therefore makes the two SDP directions explicit:

```python
from janus_api.models.base import Jsep
from janus_nosip_plugin import NoSipPlugin

bridge = NoSipPlugin(session=session)
await bridge.attach()

# WebRTC JSEP -> bare SDP for an external signalling protocol.
generated = await bridge.generate(Jsep(type="offer", sdp=webrtc_offer))
plain_sdp = generated.data.result.sdp

# Bare remote SDP -> JSEP returned in processed.jsep.
processed = await bridge.process("answer", remote_plain_sdp)
remote_jsep = processed.jsep
```

The package covers `generate`, `process`, `hangup`, `recording`, `keyframe`,
`rtp_forward`, `stop_rtp_forward`, and `listforwarders`. Ports, payload types,
stream collections, JSEP directions, and SRTP parameter pairs are validated
before I/O.

See the official [NoSIP API](https://janus.conf.meetecho.com/docs/nosip.html).
Outbound schemas are strict; inbound schemas retain unknown keys and event
variants for compatibility with newer Janus versions.

