Player Version Selection
Overview
Fastevo MP2 automatically rolls out compatible player binaries to every project. This guide documents the user-facing endpoints that let you
- inspect the catalog of available player versions,
- review the release notes for a specific build,
- control which versions are eligible for your project, and
- optionally configure canary rollouts.
All endpoints live under:
https://api.fastevo.net/api/v1/projects/mediaProtection/configurations/playerVersionsAuthentication
Every request must include either a Project API Key or a user bearer token that maps to the project. Set the header just as you do for the rest of the MP2 APIs:
Authorization: Bearer <PROJECT_API_KEY>
Content-Type: application/jsonStatus Values & Selection Priority
Player versions are published with one of the following statuses:
stablebetaalphadeprecated
When your selection does not explicitly match any version (e.g., an empty result for a semver range), MP2 falls back to the best available status in the following order: stable → beta → alpha → deprecated.
Listing Player Versions
GET /Returns a paginated list of versions visible to the project.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | number | Page index (defaults to 1). |
limit | number | Page size (defaults to 10). |
orderBy | string | Any of versionName, releasedAt, createdAt, majorVersion, minorVersion, patchVersion. |
order | string | asc or desc (defaults to desc). |
status | string | Filter by status (values listed above). |
isLts | boolean | Only Long Term Support builds when true. |
versionName | string | Case-insensitive substring match. |
releaseNotes | string | Case-insensitive substring match. |
majorVersion, minorVersion, patchVersion | number | Exact numeric filters. |
Example
curl -X GET \
"https://api.fastevo.net/api/v1/projects/mediaProtection/configurations/playerVersions?status=beta&limit=5" \
-H "Authorization: Bearer $PROJECT_API_KEY"Sample Response
{
"currentPage": 1,
"totalPages": 1,
"totalRecords": 2,
"data": [
{
"versionName": "test-project-player-version-beta-21000102",
"status": "beta",
"releasedAt": "2100-01-02T00:00:00.000Z",
"releaseNotes": "Beta release for project tests",
"majorVersion": 100,
"minorVersion": 1,
"patchVersion": 0,
"buildNumber": null,
"isLts": false,
"features": ["Beta feature"],
"bugFixes": [],
"breakingChanges": [],
"createdAt": "2025-01-08T15:32:11.242Z",
"updatedAt": "2025-01-08T15:32:11.242Z"
}
]
}Retrieving Version Details
GET /{versionName}Fetches a single record by its exact versionName.
curl -X GET \
"https://api.fastevo.net/api/v1/projects/mediaProtection/configurations/playerVersions/test-project-player-version-stable-21000101" \
-H "Authorization: Bearer $PROJECT_API_KEY"Returns 404 if the version does not exist.
Reading the Current Selection
GET /selectionThe response always includes a selection payload. New projects receive the default configuration:
{
"playerVersionSelection": {
"versionRange": "latest",
"allowedStatuses": ["stable"],
"canaryConfig": {
"isCanaryEnabled": false,
"canaryVersionRange": null,
"canaryTrafficPercentage": 0
}
}
}Updating the Selection
PUT /selectionProvide any combination of versionRange, allowedStatuses, and canaryConfig. Omitted fields retain their previous values.
Request Body Fields
versionRange: accepts"latest", a semantic version (e.g.,"2.3.1"), wildcards like"1.*", or semver ranges (e.g.,">=2.0.0 <3.0.0").allowedStatuses: array of status identifiers listed above.canaryConfig:isCanaryEnabled: boolean flag.canaryVersionRange: string range or single version (optional).canaryTrafficPercentage: number between 0 and 100.
Example
curl -X PUT \
"https://api.fastevo.net/api/v1/projects/mediaProtection/configurations/playerVersions/selection" \
-H "Authorization: Bearer $PROJECT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"versionRange": ">=1.0.0 <2.0.0",
"allowedStatuses": ["beta", "stable"],
"canaryConfig": {
"isCanaryEnabled": true,
"canaryVersionRange": "beta",
"canaryTrafficPercentage": 15
}
}'Response
{
"playerVersionSelection": {
"versionRange": ">=1.0.0 <2.0.0",
"allowedStatuses": ["beta", "stable"],
"canaryConfig": {
"isCanaryEnabled": true,
"canaryVersionRange": "beta",
"canaryTrafficPercentage": 15
}
}
}If isCanaryEnabled is true but canaryVersionRange is missing or empty, MP2 disables the canary automatically and preserves the requested traffic percentage. This prevents partially configured rollouts.
Resetting the Selection
DELETE /selectionClears your overrides and reverts the project to the defaults shown above.
curl -X DELETE \
"https://api.fastevo.net/api/v1/projects/mediaProtection/configurations/playerVersions/selection" \
-H "Authorization: Bearer $PROJECT_API_KEY"The API responds with HTTP 204. Subsequent GET /selection calls reflect the default state (latest + stable + canary disabled).
Tips & Best Practices
- Cache refresh: after creating or deleting player versions via admin tools, call
GET /selectionwithforceRefreshCache=true(query string) if you need immediate visibility. - Semver ranges: MP2 uses the Node
semverlibrary with prerelease support. Complex expressions such as">=3.1.0-beta <3.1.0"are valid. - Fallback awareness: even if your range produces no matches, MP2 returns the best candidate within the allowed statuses. Keep this in mind when you expect a “hard fail.”
- Canary cohorts: pair
canaryVersionRangewith SIEM rules or viewer identifiers so you can validate the target version on a stable cohort before broad rollout.