voltkit-rtc-server 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- voltkit_rtc_server-0.1.0/.gitignore +8 -0
- voltkit_rtc_server-0.1.0/CHANGELOG.md +57 -0
- voltkit_rtc_server-0.1.0/LICENSE +21 -0
- voltkit_rtc_server-0.1.0/PKG-INFO +877 -0
- voltkit_rtc_server-0.1.0/README.md +850 -0
- voltkit_rtc_server-0.1.0/examples/README.md +65 -0
- voltkit_rtc_server-0.1.0/examples/fastapi_token_server.py +80 -0
- voltkit_rtc_server-0.1.0/examples/flask_token_server.py +85 -0
- voltkit_rtc_server-0.1.0/examples/webhook_receiver.py +100 -0
- voltkit_rtc_server-0.1.0/pyproject.toml +87 -0
- voltkit_rtc_server-0.1.0/tests/__init__.py +0 -0
- voltkit_rtc_server-0.1.0/tests/conftest.py +261 -0
- voltkit_rtc_server-0.1.0/tests/live_smoke.py +464 -0
- voltkit_rtc_server-0.1.0/tests/test_errors.py +151 -0
- voltkit_rtc_server-0.1.0/tests/test_loopback.py +401 -0
- voltkit_rtc_server-0.1.0/tests/test_options.py +296 -0
- voltkit_rtc_server-0.1.0/tests/test_redaction.py +343 -0
- voltkit_rtc_server-0.1.0/tests/test_replies.py +308 -0
- voltkit_rtc_server-0.1.0/tests/test_requests.py +474 -0
- voltkit_rtc_server-0.1.0/tests/test_retries.py +276 -0
- voltkit_rtc_server-0.1.0/tests/test_threads.py +68 -0
- voltkit_rtc_server-0.1.0/tests/test_vectors.py +529 -0
- voltkit_rtc_server-0.1.0/tests/test_webhooks.py +279 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/__init__.py +114 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/_redaction.py +333 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/_version.py +3 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/client.py +846 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/errors.py +278 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/py.typed +0 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/transport.py +208 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/types.py +448 -0
- voltkit_rtc_server-0.1.0/voltkit_rtc/server/webhooks.py +184 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 (2026-10-23)
|
|
4
|
+
|
|
5
|
+
The first release under the name `voltkit-rtc-server`, imported as
|
|
6
|
+
`voltkit_rtc.server`. The name says what the package is for: your backend,
|
|
7
|
+
where the API secret lives. The `voltkit-rtc` 0.1.0 published on PyPI earlier
|
|
8
|
+
the same day was this same code under the package's first name; it is yanked,
|
|
9
|
+
so install `voltkit-rtc-server` and import from `voltkit_rtc.server`.
|
|
10
|
+
`voltkit_rtc` itself is a namespace shared by VoltKit's Python packages, with
|
|
11
|
+
no `__init__.py` of its own, so `import voltkit_rtc` alone holds nothing.
|
|
12
|
+
|
|
13
|
+
Every call of `@voltkit-rtc/server` 0.4.8, with the same requests, replies,
|
|
14
|
+
retries, errors and redaction. The behaviour is pinned by the shared vectors
|
|
15
|
+
(`docs/server-sdk-vectors.json`, generated from the Node SDK) and described in
|
|
16
|
+
`docs/SERVER-SDK-SPEC.md`.
|
|
17
|
+
|
|
18
|
+
- `StreamClient` with `ensure_room`, `create_room`, `create_token`, `get_room`,
|
|
19
|
+
`list_rooms`, `list_participants`, `delete_room`; chat (`create_chat_token`,
|
|
20
|
+
`get_chat_info`, `list_messages`, `send_message`, `delete_message`,
|
|
21
|
+
`list_chat_mutes`, `mute_chat`, `unmute_chat`); usage (`get_usage`,
|
|
22
|
+
`get_usage_series`); billing (`get_balance`, `get_rates`); broadcast
|
|
23
|
+
(`create_stream`, `get_stream`, `list_streams`, `update_stream`,
|
|
24
|
+
`delete_stream`, `create_stream_token`; not offered on VoltKit cloud today).
|
|
25
|
+
`StreamClient.from_env()` reads `VOLTKIT_RTC_URL`, `VOLTKIT_RTC_SECRET` and
|
|
26
|
+
the optional `VOLTKIT_API_URL`; the plain constructor reads nothing.
|
|
27
|
+
- Transient failures (`network`, 429, 5xx except `billing-unavailable`) are
|
|
28
|
+
retried with jittered backoff (200 ms doubling, plus up to 100 ms) on every
|
|
29
|
+
call that is safe to repeat; `create_room`, `create_stream` and
|
|
30
|
+
`send_message` are sent once. A delete whose reply was lost resolves when the
|
|
31
|
+
retry answers 404.
|
|
32
|
+
- One deadline per attempt (`timeout`, default 10 s) that covers the headers
|
|
33
|
+
and the body, on `http.client` with no third-party dependency. A redirect is
|
|
34
|
+
never followed with the API key (`redirected`); the public rates may follow
|
|
35
|
+
one. An injectable `Transport` for proxies, instrumentation and tests.
|
|
36
|
+
- The API key never reaches an error, a log line or a printed client: the
|
|
37
|
+
server's words, a redirect's target and the transport's own error are
|
|
38
|
+
redacted in every encoding the Node SDK redacts (URL-encoded, form-encoded,
|
|
39
|
+
JSON-escaped, HTML character references, and each of those escaped once
|
|
40
|
+
more); URL credentials are hidden; a key that no HTTP header can carry, or
|
|
41
|
+
that no VoltKit key has, is refused when the client is made. `repr`, `str`,
|
|
42
|
+
`vars` and `pickle` show nothing.
|
|
43
|
+
- Webhooks: `verify_webhook` and `parse_webhook` over the raw body, with lists
|
|
44
|
+
of secrets for a rotation, several `v1` signatures, a 300-second tolerance in
|
|
45
|
+
both directions, constant-time comparison, and the shared golden vector.
|
|
46
|
+
- `StreamError` with `code`, `status`, `message`, `retryable` and the
|
|
47
|
+
predicates `is_not_found`, `is_out_of_minutes`, `is_quota`,
|
|
48
|
+
`is_capacity_exhausted`, `is_broadcast_disabled`, `is_billing_unavailable`;
|
|
49
|
+
`ERROR_CODES` and `REST_ERROR_CODES` from the shared registry.
|
|
50
|
+
- Typed (`py.typed`, `TypedDict`s for every reply), Python 3.9 to 3.14.
|
|
51
|
+
|
|
52
|
+
Compared with the unpublished 2026-10-15 draft: local token minting
|
|
53
|
+
(`tokens.py`) is gone, since VoltKit tokens are signed by the controller with a
|
|
54
|
+
secret a customer never holds; `urllib` gave way to `http.client` so the
|
|
55
|
+
deadline covers the body; the key is validated and redacted in every form
|
|
56
|
+
rather than replaced as a literal; the missing `screen-share-ended` code was
|
|
57
|
+
added to the registry.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VoltKit
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|