Metadata-Version: 2.4
Name: bosch-shc-camera-client
Version: 0.4.0
Summary: Async Python client library for Bosch Smart Home Camera cloud + local (RCP) APIs.
Project-URL: Homepage, https://github.com/mosandlt/bosch-shc-camera-client
Project-URL: Repository, https://github.com/mosandlt/bosch-shc-camera-client
License: MIT License
        
        Copyright (c) 2026 Thomas Mosandl
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: aiohttp
Requires-Dist: defusedxml>=0.7.1
Description-Content-Type: text/markdown

# bosch-shc-camera-client

Async Python client library for Bosch Smart Home Camera cloud + local (RCP) APIs.

Extracted from the [Bosch Smart Home Camera Tool](https://github.com/mosandlt/Bosch-Smart-Home-Camera-Tool-HomeAssistant)
integration family (Home Assistant, ioBroker, Python CLI, MCP, Node-RED, NiceGUI frontend) so every
consumer shares one maintained implementation instead of duplicating the client logic per platform.

Status: early extraction in progress. Not yet feature-complete versus the inline modules it's replacing.

## Scope

- Local RCP protocol read access over `/rcp.xml` (Gen2 camera on-device control plane), read-only
  (`local_rcp` module — synchronous, used from an executor thread).
- HTTP Digest authentication (RFC 7616/2617) — `auth_utils.async_digest_request`.
- RCP (Remote Configuration Protocol) via cloud proxy and direct LOCAL (`rcp` module): session
  management with TTL caching, binary protocol reads, direct-LOCAL Gen2 reads/writes (privacy mode,
  front-light brightness), and response parsers (alarm catalog, motion zones/coords, TLS cert info,
  network services, IVA analytics catalog). All session/SSL-context objects are caller-injected — this
  module never builds or caches HA-specific process-wide state itself.
- Bosch cloud API (`residential.cbs.boschsecurity.com`) write endpoints: privacy mode, camera light,
  notifications, pan — **planned**, not yet extracted. These need a session-injection + cache-redesign
  refactor (some hold cross-call business state — a lighting-switch response cache, a last-brightness
  memory — not just a session) before they can move here cleanly; see the source repo's
  `knowledge-base/ha-core-submission-plan.md` for the concrete spec.

Out of scope (stays integration-specific, not extracted here): FCM push-notification plumbing tied to
Home Assistant's recorder/snapshot-store internals, anything HA-entity-shaped, and the SMB/FTP export
helpers (`smb.py`) — those reach into the HA integration's coordinator object directly
(`coordinator.hass`, `coordinator.options`, private state) rather than being a standalone API client, so
they don't belong in a generic library without their own decoupling pass first.

## Install

```
pip install bosch-shc-camera-client
```

## License

MIT, see [LICENSE](LICENSE).
