Migrate to Management API v2

Learn how to migrate from Platform Management API v1 to API v2

Overview

The Platform Management API enables you to programmatically modify many of your JW Player products and features. While maintaining this functionality, the Platform Management API v2, improves security and adheres to consistent design principles.


Improved security

Instead of using signature-based authentication, the Platform Management API v2 uses a simpler Bearer authentication. This new API version also gives you greater control over your keys and access control.

v2v1
AuthenticationBearer authenticationSignature-based authentication
Number of API keysMultiple API credentials per siteSingle site credential
API key replacementCompromised keys can be deleted and new keys created by an admin userA compromised key requires contacting JW Player Support
Access ControlAbility to define the user role and sites to which an API key has accessAPI key has full account access and applies to a single site

Adherence to consistent design

The Platform Management API v2 is a RESTful API structured around resources. HTTPS verbs are associated with one of several types of routes. Request bodies are standardized. The query parameter q has been added to provide powerful options to filter results.

v2v1
HTTPS verbsStandard association of GET, POST, PATCH, PUT, and DELETE with types of routesInconsistent usage that relies heavily upon GET and POST
Request bodyJSON payloads that contain one or more of the following attributes: metadata, upload, and relationshipsPayloads with an inconsistent structure
SearchQuery parameter q that provides powerful filtering optionsUnique query parameters for each querying option with no complex filtering options


Quick Start

To quickly get started with the Platform Management API v2, we suggest the following steps:

  1. Familiarize yourself with the API v2 authentication.
  2. Choose one of our Platform Management API v2 client libraries. These libraries help you to quickly incorporate products, features, and functionality into your existing workflow.
🚧

If you currently use an officially supported client library, you will need to update the version being used.


If you have a specialized implementation of JW Player's Platform Management API v1, we recommend reviewing the following Detailed Changes section.



Detailed Changes

In addition to the aspects highlighted in the overview, changes have been made in the following areas to provide a consistent design:

The following sections detail the important changes that have been made.


Resources

v1v2
---

account



When creating or modifying an account resource, the following concepts have changed:
  • An account may contain multiple sites.
  • An account is the same as a JWP dashboard
account

site



The site resource replaces the v1 account resource.

channel

playlist



When creating or modifying a playlist resource, the following parameters have changed:


  • The query parameter type in v1 is now the path parameter playlist_type.
  • Custom parameters (accessed as custom.{param}) are now a single field called custom_params.
  • With the exception of author, description, link, and title, all other fields have been moved to the subresource for each playlist type (article matching, dynamic, manual, recommendations, search, and trending).
conversion

originals



Original conversions are now available via a separate originals endpoint. All other conversions are now referred to as media_renditions.



When creating or modifying an original resource the following parameter has changed:


  • The template field has been removed.

media_renditions



When creating or modifying a media_renditions resource the following parameters have changed:


  • The duration field has been removed from media_renditions and is only available on originals.
  • The template field has been removed.
  • The link field has been replaced with a single string field delivery_url.
  • The filesize field is now an integer instead of a string.
player

player



When creating or modifying a player resource the following parameters have changed:


  • Custom parameters (accessed as custom.{param}) are now a single field called custom_params.
  • With the exception of release_channel and name, all other fields have been moved to the setup_config object.
tag

N/A



Tags are no longer a resource. They are an attribute of other resources such as media.

thumbnail

thumbnail



The thumbnail resource provides different functionality:


  • A thumbnail can be explicitly chosen to be the poster for a media.
  • A list of previous thumbnails can be retrieved.
track

text_track



When creating or modifying a text_track resource, the following parameters have changed:


  • The link object is now a single string field called delivery_url.
  • The md5 and size fields have been removed.
usage

N/A



Usage is now retrieved via an action endpoint.

video

media



When creating or modifying a media resource, the following parameters have been renamed:


  • The date field has been renamed publish_start_date.
  • The error field has been renamed error_message.
  • The expires_date field has been renamed publish_end_date.
  • The link field has been renamed permalink.
  • The mediatype field has been renamed media_type.
  • The sourceformat field has been renamed mime_type.
  • The sourcetype field has been renamed hosting_type.

The following parameters have changed:


  • Custom parameters (accessed as custom.{param}) are now a single field called custom_params.

  • The md5 and size fields have been removed.

  • The upload configuration fields (method, mime_type, source_url, download_url, trim_in_point, trim_out_point) are now in a separate upload object. Learn about uploading content in API v2.


    • Routes

      /v1/accounts/

      v1v2
      /v1/accounts/tags/createNot supported
      /v1/accounts/tags/deletePUT /v2/sites/{site_id}/remove_tag/
      /v1/accounts/tags/listNot supported
      /v1/accounts/tags/showNot supported
      /v1/accounts/tags/updatePUT /v2/sites/{site_id}/rename_tag/
      /v1/accounts/usage/showPUT /v2/sites/{site_id}/query_usage/

      /v1/channels

      v1v2
      /v1/channels/createPOST /v2/sites/{site_id}/playlists/{playlist_type}/
      /v1/channels/deleteDELETE /v2/sites/{site_id}/playlists/{playlist_id}/

      OR

      DELETE /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/listGET /v2/sites/{site_id}/playlists/
      /v1/channels/showGET /v2/sites/{site_id}/playlists/{playlist_id}/

      OR

      GET /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/updatePATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/videos/createPATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/videos/deletePATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/videos/listPATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/videos/showPATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/
      /v1/channels/videos/updatePATCH /v2/sites/{site_id}/playlists/{playlist_id}/{playlist_type}/

      /v1/players

      v1v2
      /v1/players/createPOST /v2/sites/{site_id}/players/
      /v1/players/deleteDELETE /v2/sites/{site_id}/players/{player_id}/
      /v1/players/listGET /v2/sites/{site_id}/players/
      /v1/players/showGET /v2/sites/{site_id}/players/{player_id}/
      /v1/players/updatePATCH /v2/sites/{site_id}/players/{player_id}/

      /v1/status

      v1v2
      /v1/statusNot supported

      /v1/videos

      v1 v2
      /v1/videos/create POST /v2/sites/{site_id}/media/
      /v1/videos/delete DELETE /v2/sites/{site_id}/media/{media_id}/
      /v1/videos/list GET /v2/sites/{site_id}/media/
      /v1/videos/show GET /v2/sites/{site_id}/media/{media_id}/
      /v1/videos/update PATCH /v2/sites/{site_id}/media/{media_id}/
      /v1/videos/conversions/create POST /v2/sites/{site_id}/media/{media_id}/media_renditions/
      /v1/videos/conversions/delete DELETE /v2/sites/{site_id}/media/{media_id}/media_renditions/{rendition_id}/
      /v1/videos/conversions/list GET /v2/sites/{site_id}/media/{media_id}/originals/

      AND

      GET /v2/sites/{site_id}/media/{media_id}/media_renditions/
      /v1/videos/conversions/show GET /v2/sites/{site_id}/media/{media_id}/media_renditions/{rendition_id}/
      /v1/videos/tags/list Not supported
      /v1/videos/thumbnails/show GET /v2/sites/{site_id}/thumbnails/{thumbnail_id}
      /v1/videos/thumbnails/update POST /v2/sites/{site_id}/thumbnails/

      AND

      PATCH /v2/sites/{site_id}/thumbnails/{thumbnail_id}
      /v1/videos/tracks/create POST /v2/sites/{site_id}/media/{media_id}/text_tracks/
      /v1/videos/tracks/delete DELETE /v2/sites/{site_id}/media/{media_id}/text_tracks/{track_id}/
      /v1/videos/tracks/list GET /v2/sites/{site_id}/media/{media_id}/text_tracks/
      /v1/videos/tracks/show GET /v2/sites/{site_id}/media/{media_id}/text_tracks/{track_id}/
      /v1/videos/tracks/update PATCH /v2/sites/{site_id}/media/{media_id}/text_tracks/{track_id}/

      Parameters

      v1 v2
      custom parameters

      {
        "custom.example1": "value",
        "custom.-example2": null
      }

      If a parameter already exists in the database, it will be updated with the new value.

      If a parameter name starts with -, parameter with the same name (but without leading -) will be deleted from the database.

      custom parameters

      {
        "metadata": {
          "custom_params": {
            "example1": "value"
          }
        }
      }

      When updating existing custom_params, include all custom_params keys with their updated values.

      Any custom_params key-value pair not included within the updated custom_params in the request body is deleted.

      keyid
      metadata

      {
        "name": "Example player",
        "release_channel": "latest",
        "aspectratio": "16:9",
        "responsive": true,
        "autostart": false,
        "displaydescription": true,
        "displaytitle": true,
        "playback_rate_controls": true,
        "preload": "metadata",
        "repeat": false,
        "stretching": "uniform"
      }
      
      metadata

      {
          "metadata": {
              "name": "Example player",
              "release_channel": "latest",
              "setup_config": {
                  "aspectratio": "16:9",
                  "responsive": true,
                  "autostart": false,
                  "displaydescription": true,
                  "displaytitle": true,
                  "playbackRateControls": true,
                  "preload": "metadata",
                  "repeat": false,
                  "stretching": "uniform"
              }
          }
      }

      With the exception of release_channel and name, all other fields have been moved to the setup_config object. This change enables support for any options available in the player but removes API validation.


      Error Messaging

      The response format of API errors has changed.

      v1 v2
      {
        "code": "ServerError",
        "message": "Something went wrong!"
      }
      

      This format only contains a single error at a time. If there were multiple errors with your request it could be a tedious process to address them one at a time.

      {
          "errors": [{
              "code": "server_error",
              "description": "Something went wrong!"
          }]
      }

      Multiple errors may be returned in a single response. This allows you to see and respond to multiple errors with your request at once.

      The code field still refers to a short string intended for automation while description (formerly message) is a human-readable explanation.


      © 2007- Longtail Ad Solutions, Inc.