Metadata-Version: 2.4
Name: satvu
Version: 0.4.0
Summary: SatVu API SDK
Project-URL: Homepage, https://www.satellitevu.com/
Project-URL: Documentation, https://github.com/SatelliteVu/satvu-api-sdk#readme
Project-URL: Repository, https://github.com/SatelliteVu/satvu-api-sdk
Project-URL: Issues, https://github.com/SatelliteVu/satvu-api-sdk/issues
Project-URL: Changelog, https://github.com/SatelliteVu/satvu-api-sdk/blob/main/CHANGELOG.md
Author-email: Christian Wygoda <christian.wygoda@satellitevu.com>, James Harrison <james.harrison@satellitevu.com>, Zhelini Raveendran <zhelini.raveendran@satellitevu.com>
License-Expression: MIT
License-File: LICENSE
Keywords: api-client,earth-observation,geospatial,imagery,remote-sensing,satellite,sdk,stac,thermal
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Pydantic :: 2
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.11.7
Provides-Extra: http-httpx
Requires-Dist: httpx>=0.28.1; extra == 'http-httpx'
Provides-Extra: http-requests
Requires-Dist: requests>=2.32.0; extra == 'http-requests'
Provides-Extra: http-urllib3
Requires-Dist: urllib3>=2.0.0; extra == 'http-urllib3'
Provides-Extra: standard
Requires-Dist: appdirs>=1.4.4; extra == 'standard'
Description-Content-Type: text/markdown

# SatVu API SDK

[![pypi](https://img.shields.io/pypi/v/satvu)](https://pypi.org/project/satvu/)
[![GitHub License](https://img.shields.io/github/license/SatelliteVu/satvu-api-sdk)](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/LICENSE)
[![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/satellitevu)](https://x.com/intent/follow?screen_name=satellitevu)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-blue?style=flat&logo=linkedin)](https://uk.linkedin.com/company/satvu)

Python SDK for [SatVu's](https://www.satellitevu.com/) satellite imagery platform.

## ✨ Features

- **Unified Interface** - Access all SatVu APIs through a single SDK
- **Type Safety** - Full type hints with Pydantic models for requests and responses
- **Explicit Error Handling** - Rust-inspired Result types for predictable error handling
- **Multiple HTTP Backends** - Choose httpx, requests, urllib3, or stdlib
- **Built-in Pagination** - Iterator methods for seamless pagination through large result sets
- **Streaming Downloads** - Memory-efficient downloads for large satellite imagery files

## 📦 Installation

The package is published on [PyPI](https://pypi.org/project/satvu/) and can be installed with pip:

```bash
pip install satvu
```

With optional HTTP backends:

```bash
pip install satvu[http-httpx]
pip install satvu[http-requests]
pip install satvu[http-urllib3]
```

The SDK works out of the box with Python's built-in `urllib`.

## 🚀 Quick Start

```python
import os
from uuid import UUID
from satvu import SatVuSDK

sdk = SatVuSDK(
    client_id=os.environ["SATVU_CLIENT_ID"],
    client_secret=os.environ["SATVU_CLIENT_SECRET"],
)

contract_id = UUID(os.environ["SATVU_CONTRACT_ID"])

# Search the catalog
results = sdk.catalog.get_search(contract_id=contract_id, limit=10)
for feature in results.features:
    print(feature.id)
```

## Available Services

| Service        | Description                                                                               |
| -------------- | ----------------------------------------------------------------------------------------- |
| `sdk.catalog`  | Search and discover SatVu's [STAC](https://github.com/radiantearth/stac-api-spec) catalog |
| `sdk.cos`      | Order and download imagery available from SatVu's STAC catalog                            |
| `sdk.id`       | Identity and user management, including webhooks                                          |
| `sdk.otm`      | Order and manage satellite tasking                                                        |
| `sdk.policy`   | Check active contracts                                                                    |
| `sdk.reseller` | Perform reseller operations                                                               |
| `sdk.wallet`   | Check credit balances                                                                     |

## 📖 Documentation

- [Getting Started](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/getting-started.md) - Installation, authentication, first API call
- [Authentication](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/authentication.md) - OAuth2 flow, token caching, environments
- [Error Handling](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/error-handling.md) - Result types and error patterns
- [Pagination](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/pagination.md) - Working with paginated endpoints
- [Streaming Downloads](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/streaming-downloads.md) - Downloading large imagery files
- [HTTP Backends](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/docs/http-backends.md) - Choosing and configuring HTTP clients
- [Changelog](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/CHANGELOG.md)

## Requirements

- Python 3.10+

## Contributing

See [CONTRIBUTING.md](https://github.com/SatelliteVu/satvu-api-sdk/blob/main/CONTRIBUTING.MD) for development setup and guidelines.

## Support

For bugs and feature requests, please [open an issue](https://github.com/satellitevu/satvu-api-sdk/issues).
