Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/fastpix-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
python-version: '3.x'

- name: Install build tools
run: python -m pip install --upgrade build twine
run: python -m pip install build==1.6.0 twine==7.0.0

- name: Build package
run: python -m build
Expand Down
17 changes: 5 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -142,22 +142,15 @@ dmypy.json
*.backup
*.bak

# Validation harness — artifacts contain workspace IDs and live-stream secrets
# (streamKey, srtSecret); generated reports change every run.
# Test harness output (generated per run)
.venv-tests/
tests/artifacts/
tests/artifacts_non_get/
tests/*OPENAPI_RESPONSE*.md
tests/BROKEN_LINKS_REPORT.md
tests/NON_GET_ENDPOINTS_VALIDATION_REPORT.md
tests/GET_ENDPOINTS_VALIDATION_REPORT.md

# Local SDK usage examples (contain live workspace credentials/IDs)
tests/*_REPORT.md
tests/*_FIX_SUGGESTIONS.md
tests/examples/

node_modules/

#Local files
/fixed.yaml
/fastpix-openai.yaml
fastpix.yaml
# Local OpenAPI spec snapshot used by the test harness
/openapi.yaml
89 changes: 79 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,45 @@

All notable changes to this project will be documented in this file.

---

## [1.2.0]

### Breaking

- **Media `duration` is now a float (seconds)** instead of an `"HH:MM:SS"`
string, matching the updated API. Affects the media responses returned by
`get_media`, `list_media`, `list_live_clips`, `updated_media`,
`updated_source_access`, `updated_mp4_support`, `get_media_clips`, and the
playlist `mediaList` items.

### Added

- **`enable_recording`** on live stream creation (`inputMediaSettings`,
defaults to `true`) — controls whether the livestream is recorded to a VOD
asset.
- **`access_restrictions`** (domain and user-agent allow/deny policies) on
live playback ID create/get and on live stream `playbackSettings`.
- **`update_live_stream_domain_restrictions()` /
`update_live_stream_user_agent_restrictions()`** (and `_async` variants) —
`PATCH /live/streams/{streamId}/playback-ids/{playbackId}/domains` and
`/user-agents`.
- **Async variants** for the on-demand `update_domain_restrictions` and
`update_user_agent_restrictions`, which were sync-only.
- **Model contract test suite** (`tests/test_models.py`).

### Fixed

- **Async error handling never raised** — `_raise_for_status_async` was called
without `await` across the async methods, so failed responses returned
`None` instead of raising typed errors.
- **Return annotations for live playback ID create/get, `list_media`, and
`list_live_clips`** corrected to the actual response envelopes
(`PlaybackIDSuccessResponse`, `ListMediaResponse`, `ListLiveClipsResponse`).
- **Return annotations across all resource methods** — 104 methods declared the
inner `data` type or a list where the SDK actually returns the `{success, data}`
envelope, so type checkers rejected `.data` access. All now match the returned
class; a test enforces this.

---

Expand Down Expand Up @@ -57,6 +96,7 @@ All notable changes to this project will be documented in this file.
## [1.1.4]

### Changed

- **SDK version bump: `1.1.3` → `1.1.4`.**
A maintenance release that aligns the SDK's internal version identifiers and
applies behaviour-preserving code-quality cleanup. It contains no functional,
Expand All @@ -76,6 +116,7 @@ All notable changes to this project will be documented in this file.
conditionals merged. No public-surface impact.

### Compatibility

- No changes to public types, method signatures, request/response models,
default server URLs, hooks, or retry logic.
- No action required for existing integrations — upgrade the dependency and
Expand All @@ -89,14 +130,14 @@ All notable changes to this project will be documented in this file.

All FastPix-owned hosts, API endpoints, and documentation links are being moved from the `.io` TLD to `.com`. The `.io` hosts continue to serve traffic during the transition window, **but they are slated for deprecation soon** — please update any hard-coded references in your application as part of your next deploy.

| Old (`.io`) | New (`.com`) |
|---|---|
| `api.fastpix.io` | `api.fastpix.com` |
| `stream.fastpix.io` | `stream.fastpix.com` |
| `images.fastpix.io` | `images.fastpix.com` |
| Old (`.io`) | New (`.com`) |
| ---------------------- | ----------------------- |
| `api.fastpix.io` | `api.fastpix.com` |
| `stream.fastpix.io` | `stream.fastpix.com` |
| `images.fastpix.io` | `images.fastpix.com` |
| `dashboard.fastpix.io` | `dashboard.fastpix.com` |
| `www.fastpix.io` | `www.fastpix.com` |
| `docs.fastpix.io/...` | `fastpix.com/docs/...` |
| `www.fastpix.io` | `www.fastpix.com` |
| `docs.fastpix.io/...` | `fastpix.com/docs/...` |

What this means for users of `fastpix_python`:

Expand All @@ -120,51 +161,58 @@ What this means for users of `fastpix_python`:
## [1.1.2]

### Fixed

- Fixed `events` field in `get_video_view_details` response returning empty objects — added `validation_alias` mappings for abbreviated API keys (`pt`, `e`, `vt`, `d`) to full camelCase names (`playerPlayheadTime`, `eventName`, `viewerTime`, `eventDetails`)
- Fixed `eventDetails` nested object returning raw abbreviated keys — introduced `EventDetails` model with proper field mappings (`host`→`hostName`, `txt`→`text`, `c`→`code`, `err`→`error`, `t`→`type`, `u`→`url`, `br`→`bitrate`, `h`→`height`, `fps`→`fps`, `cd`→`codec`, `w`→`width`)
- Fixed `fpSDK` and `fpSDKVersion` fields missing from response — added `AliasChoices` to accept both `fpSdk` and `fpSDK` variants from the API
- Fixed `experimentName` null value being excluded from serialized output
- Added missing `custom` field to `Views` model to capture user-defined metadata object

### Improved

- Response models for video view details now fully conform to the OpenAPI spec field names

---

## [1.1.1]

### Fixed

- Fixed SDK import paths in `_sub_sdk_map` - changed from `Fastpix.*` to `fastpix_python.*` to resolve `ModuleNotFoundError` for end users
- Fixed all documentation examples - removed unnecessary `sys.path.append()` statements
- Updated method name from `create_from_url` to `create_media` in examples

### Improved

- All SDK documentation examples now work out-of-the-box without workarounds
- Consistent import statements across all documentation files

## [1.1.0]

### Fixed

- Fixed missing parameters in multiple API methods.

### Improved

- Improved overall developer experience through more accurate typings.

## [1.0.3]

### Fixed
- Fixed pyproject.toml file Packaging Issue

- Fixed pyproject.toml file Packaging Issue

## [1.0.2]

### Fixed
- Fixed Packaging Issue

- Fixed Packaging Issue

## [1.0.1]

### Fixed

- Fixed all error handling links in README.md documentation
- Corrected typos in file paths (e.g., `fFastpix` → `Fastpix`)
- Updated filenames to match actual error class files (added missing underscores)
Expand All @@ -174,6 +222,7 @@ What this means for users of `fastpix_python`:
## [1.0.0]

### Added

- Complete API coverage for Media, Live Streaming, Video Data, and Signing Keys
- Python 3.9+ support with async/await patterns and type hints
- Media upload, management, and processing capabilities
Expand All @@ -188,12 +237,14 @@ What this means for users of `fastpix_python`:
- Built-in retry mechanisms and timeout handling

### Changed

- Reorganized package structure for better maintainability
- Updated dependencies to modern Python packages (httpx, pydantic, httpcore)
- Improved API design with better error handling
- Enhanced documentation and examples

### Fixed

- Improved error handling with specific exception types
- Fixed type annotation issues for better IDE support
- Ensured consistent API patterns across modules
Expand All @@ -203,10 +254,12 @@ What this means for users of `fastpix_python`:
## [0.1.8]

### Added

- Enhanced README documentation with comprehensive usage examples
- Improved project setup and installation instructions

### Changed

- Updated version number to reflect latest improvements
- Restructured documentation for better user experience
- Enhanced code examples and API usage guides
Expand All @@ -216,10 +269,12 @@ What this means for users of `fastpix_python`:
## [0.1.7]

### Added

- New base URL configuration system for better API connectivity
- Support for different API environments (production, staging, development)

### Changed

- Updated base URL configuration for improved API endpoint resolution
- Enhanced connection stability and reliability
- Improved error handling for connection issues
Expand All @@ -229,10 +284,12 @@ What this means for users of `fastpix_python`:
## [0.1.6]

### Added

- Project URL management system for better package distribution
- Enhanced package metadata and configuration

### Changed

- Updated project URLs in configuration files for better package identification
- Improved package metadata and distribution information
- Enhanced project discoverability and documentation links
Expand All @@ -242,11 +299,13 @@ What this means for users of `fastpix_python`:
## [0.1.5]

### Added

- Comprehensive version tracking and file management system
- Automated version control and release management
- Initial project structure and configuration framework

### Changed

- Updated version number and project configuration
- Improved project organization and file structure
- Enhanced build and deployment processes
Expand All @@ -256,10 +315,12 @@ What this means for users of `fastpix_python`:
## [0.1.4]

### Added

- New package naming convention for better identification
- Enhanced package metadata and distribution information

### Changed

- Changed package name for better identification and distribution
- Updated package metadata and configuration
- Improved package discoverability and installation process
Expand All @@ -269,10 +330,12 @@ What this means for users of `fastpix_python`:
## [0.1.3]

### Added

- Version management improvements
- Enhanced configuration system

### Changed

- Updated version number to reflect latest changes
- Improved project configuration and build processes
- Enhanced package metadata and dependencies
Expand All @@ -282,15 +345,18 @@ What this means for users of `fastpix_python`:
## [0.1.2]

### Added

- Comprehensive documentation link validation system
- Enhanced workflow automation and CI/CD pipeline

### Fixed

- Corrected redirection links in README documentation
- Fixed broken documentation links for better user experience
- Resolved navigation issues in project documentation

### Changed

- Updated workflow configuration and processes
- Improved project automation and deployment pipeline
- Enhanced documentation structure and organization
Expand All @@ -300,17 +366,20 @@ What this means for users of `fastpix_python`:
## [0.1.1]

### Changed

- Updated codebase with consistent naming conventions
- Added comprehensive package description

### Fixed

- Resolved naming convention inconsistencies

---

## [0.1.0]

### Added

- Initial release of FastPix Python SDK
- Sync and async client support
- Media API integration with upload, management, and processing
Expand All @@ -320,4 +389,4 @@ What this means for users of `fastpix_python`:
- Livestream API integration
- Livestream management (create, update, delete)
- Playback ID management for livestreams
- Simulcast configuration for livestreams
- Simulcast configuration for livestreams
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,8 @@ For detailed documentation, see [FastPix Live Stream Overview](https://fastpix.c
- [Create Playback ID](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/liveplayback/README.md#create_playback_id) - Generate secure live playback access
- [Delete Playback ID](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/liveplayback/README.md#delete_playback_id) - Revoke live playback access
- [Get Playback ID](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/liveplayback/README.md#get_playback_id_details) - Retrieve live playback configuration
- [Update Domain Restrictions](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/liveplayback/README.md#update_live_stream_domain_restrictions) - Configure domain-based access control
- [Update User-Agent Restrictions](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/liveplayback/README.md#update_live_stream_user_agent_restrictions) - Configure user-agent-based access control

#### Simulcast Stream
- [Create Simulcast](https://github.com/FastPix/fastpix-python/blob/feature/fixed-missing-parameters/docs/sdks/simulcaststream/README.md#create) - Set up multi-platform streaming
Expand Down
Loading