All notable changes to this project will be documented in this file.
Aligns the media models with the FastPix API. Contains three breaking changes.
-
mp4Supporton media responses is now an array of rendition objects instead of a single string enum — one entry per rendition, each withtype,status,height,widthandext. Request payloads are unchanged.# 1.1.3: media.mp4_support == Models::Components::MediaMp4Support::CAPPED_4K # 1.1.4: media.mp4_support&.any? { |r| r.type == 'capped_4k' && r.status == 'ready' }
-
urlremoved fromUpdateTrackRequest. A track's file can no longer be changed on update, only its language and title. Passingurl:now raisesArgumentError. -
Components::GetMediaResponserenamed toGetMediaDetailResponse, with its six satellite models. Operation classes are unchanged —get_mediastill returnsOperations::GetMediaResponse.
titleon all ten track models, request and response alike.optimizeAudioon the six media response models, and infastpixapi.yamlso it survives regeneration.360pand360accepted onsourceResolution; a 360p asset previously raised on decode.
ManageLiveStreamfailed to load — a malformed doc comment left the file unparseable, so all eight live stream operations raised on first access. Introduced and fixed within this cycle;1.1.3is unaffected.mp4Supportdocumentation and examples still described the field as a string.
- Version bump
1.1.3->1.1.4(@sdk_version,User-Agent).
A maintenance release focused on internal code quality (SonarCloud), security
hardening, and CI. It is an internal refactor with no intended changes to the
public API, method signatures, request/response models, or wire behavior and
is backward compatible with 1.1.2.
-
SDK version bump:
1.1.2→1.1.3. Updated internal identifiers:@sdk_versionconstant — now reports1.1.3.User-Agentheader — outbound requests now identify asfastpixapi-ruby 1.1.3.
-
Code-quality refactor across the SDK (SonarCloud), behavior-preserving. Spanning ~40 files in
lib/fastpix_client/*(resource clients such asviews,playback,playlist,signing_keys,simulcast_stream, and theutils/*helpersurl,forms,query_params,security,headers):- Reduced method cognitive complexity by extracting private helper methods (e.g. response/hook handling), with no change to control flow or outputs.
- Replaced duplicated inline string literals with named constants
(e.g.
CONTENT_TYPE_JSON,API_ERROR_OCCURRED). - Made raised exceptions specific instead of generic
StandardError: argument/validation guards now raiseArgumentError, and the empty-response guard raises a newFastpixClient::Models::Errors::EmptyResponseError. Both areStandardErrorsubclasses, so existingrescue/rescue StandardErrorhandling is unaffected. - Standardized
requireordering and removed redundant exception-class arguments.
- Hardened the GitHub Actions release workflow (
.github/workflows/releases.yml): pinnedactions/checkoutandruby/setup-rubyto full commit SHAs instead of mutable version tags, preventing supply-chain tampering during gem publication. - Added SonarCloud static analysis to CI via Azure Pipelines
(
azure-pipeline-files.yml).
lib/openssl_patch.rb: made the optional OpenSSL/cert patch idempotent and compatible with newer Ruby — it no longer raisesFrozenErrorwhenOpenSSL::X509::DEFAULT_CERT_FILEis frozen, and no longer warns on repeat loads. (This file is a development helper and is not loaded by the gem at runtime.)
- Development-only test harness (not shipped in the gem): standardized
requireordering, introduced a dedicatedSpecNotFoundErrorexception in place of raising string/generic errors, and reduced method parameter counts intests/validate_get_endpoints.rbandtests/validate_non_get_endpoints.rb.
- No changes to public types, method signatures, request/response models, default server URLs, security/auth, hooks, or retry logic.
- No action required for existing integrations — update the dependency
(
bundle update fastpixapiorgem update fastpixapi) and continue.
All FastPix hosts and documentation links are moving to the .com TLD:
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/... |
The .io hosts continue to serve traffic during the transition, but they are slated for deprecation soon — please update any hard-coded references in your application as part of your next deploy. We strongly recommend upgrading to this SDK release (or later) across every language you use — every official FastPix SDK is being rolled out with the same migration.
What this means for users of the fastpixapi gem:
- If you rely on SDK defaults, no code change is required. The default server URL is
https://api.fastpix.com/v1/, so bumping to1.1.2and runningbundle update fastpixapi(orgem update fastpixapi) is enough. - If you have an explicit server-URL override (e.g.
::FastpixClient::Fastpixapi.new(server_url: 'https://api.fastpix.io/v1/')), change it tohttps://api.fastpix.com/v1/. - If you reference FastPix asset URLs directly in your app (HLS playback URLs, image CDN, dashboard deep links), update those to the
.comequivalents before.iois decommissioned.
All README and per-service doc links in this package have been updated to point at the new https://fastpix.com/docs/... URLs.
dimensions.list_filter_values_for_dimension,metrics.list_breakdown_values/list_overall_values,metrics.get_timeseries_data: fixed enum path parameters (e.g.dimensionsId,metricId) being serialized as their Ruby object inspect string instead of the wire value inUtils.generate_url, which produced invalid URLs (.../#<...::BROWSER_NAME>) and caused these calls to fail.signing_keys.delete_signing_key(/iam/signing-keys/{signingKeyId}): response shape now includes the optionaldata.messageconfirmation string the API returns (added to both the OpenAPI spec and the SDK model).
- All README and per-service documentation pages updated from
docs.fastpix.io/...anddocs.fastpix.com/...to the newhttps://fastpix.com/docs/...URL structure.
- Fixed
Eventmodel JSON key mappings (pt,e,vt,d) that were incorrectly mapped, causing all event fields to deserialize asnil - Fixed
eventDetailssub-keys forrequestFailedevents (txt,c,err,t,u) andvariantChangedevents (br,h,w,cd) not being expanded to meaningful names
get_video_view_detailsresponse now serializes with full, human-readable field names instead of abbreviated wire-format keyseventsarray is now positioned at the end of thedataobject for better readabilitysuccessfield is now the first key in the response envelope- All
nullfields are now included in the serialized output for completeness
- Fixed missing parameters in multiple API methods.
- Improved overall developer experience through more accurate typings.
- Complete API coverage for Media, Live Streaming, Video Data, and Signing Keys
- Ruby 3.2+ support with comprehensive type checking via Sorbet
- Media upload, management, and processing capabilities
- Live streaming with simulcasting support
- Video analytics and performance tracking
- Cryptographic signing keys for secure authentication
- In-video AI processing features
- DRM configuration and management
- Playlist creation and management
- Comprehensive error handling with specific exception types
- Built-in retry mechanisms and timeout handling
- Comprehensive test suite with 80.7% test coverage
- Full API specification compliance
- Reorganized package structure for better maintainability
- Updated dependencies to modern Ruby packages (Faraday, Sorbet, Minitest)
- Improved API design with better error handling
- Enhanced documentation and examples
- Updated SDK version to 1.0.0
- Updated minimum Ruby version requirement to 3.2+ for better compatibility and performance
- Direct upload metadata handling
- Response object access patterns
- Type mismatches in method parameters
- Error handling for validation responses
- Test data structure alignment with API expectations
- Improved error handling with specific exception types
- Fixed type annotation issues for better IDE support
- Ensured consistent API patterns across modules
- Initial release of FastPix Ruby SDK
- Sync client support with Faraday HTTP client
- Media API integration with upload, management, and processing
- Playback ID management for media files
- Media operations (list, get, update, delete)
- Direct upload support for video files
- Live stream API integration
- Live stream management (create, update, delete)
- Playback ID management for live streams
- Simulcast configuration for live streams
- HTTP Basic authentication support
- Server URL override support
- Comprehensive error handling and custom error classes
- Example usage and quick start documentation
- CI workflow for RubyGems release
- Sorbet type checking integration
- Minitest test framework integration