Subowners

Subowners are not full-fledged accounts. For example, content sliced and encoded by one of your subowners is still owned by you and you have full control over it. Subowners are more like additional doors into parts of your account - you create the doors and the keys but never have to give out the master key (your main account credentials).

In our system, a subowner is a limited-use account login attached to your account. By using the subowner integration APIs, you can create additional login credentials for accessing your account, and you can assign different levels of permissions to those credentials. For example, the slicer, which is used for preparing assets, requires a user name and an API key. You may need to allow some people in your organization to slice content but do not wish to give them access to call APIs. With the subowner APIs, you can create a separate user name / API key for them and grant them just enough permission to slice content.

Unlike normal accounts, the user name for a subowner must not be an email address. Instead, a convention is used that consists of a short prefix for your account, followed by a dot, followed by a single word user name. For example, "ptvn.dsmith" and "ptvn.jdoe" might be two subowners created for a particular account. The system does not enforce the convention, but it may in the future. Currently the prefixes are not registered with the system, so you are free to choose any prefix you want.

Permissions

The following permissions are available for use with subowners:

Permission Description

slice

Access to use the slicers for preparing content (live and VOD)

api

Access the integration APIs

More permissions will be added as needed. Note that if you grant a subowner the 'api' permission, that subowner could in turn create additional subowners attached to your account.

/api2/subowners/create

Creates a new subowner attached to your account.

Request Parameter

Type

Description

username

string

New subowner username

password

string

New subowner password

Do not use this password to authenticate a Live Slicer to your account. Please use an API key instead. Leverage this endpoint to generate an API key that only authorizes slicer-related actions by creating a subowner that has only been granted the "slice" permission.

permissions

list

(optional) permissions to grant

Learn more.

Response: See subowners/get API.

Sample request/response:

The Call() function, which is imported from uplynk_api2_auth module, prepares the message body and digital signature.

from uplynk_api2_auth import Call

print(Call('/api2/subowners/create', username='ptvn.dave',
                              password='lamepass', permissions=['slice']))

{
  "username": "ptvn.dave",
  "permissions": [
    "slice"
  ],
  "api_key": "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG",
  "all_api_keys": {
    "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG": {
      "enabled": True
    }
    "a735c56ea4014685bc74c0a375236cc5": {
      "enabled": False
    }
  }
  "id": "f534c6e0ebba4d70b2b4c31659e50952",
  "error": 0
}

/api2/subowners/get

Retrieves details for a subowner.

Request Parameter

Type

Description

id

string

Subowner ID

Response parameters are described below.

Response Parameter

Type

Description

id

string

Subowner ID

username

string

Login username

permissions

list

Permissions granted to this subowner

api_key

string

Secret key for making API calls

Sample request/response:

The Call() function, which is imported from uplynk_api2_auth module, prepares the message body and digital signature.

from uplynk_api2_auth import Call

print(Call('/api2/subowners/get', id='f534c6e0ebba4d70b2b4c31659e50952'))

{
  "username": "ptvn.dave",
  "permissions": [
    "slice"
  ],
  "api_key": "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG",
  "all_api_keys": {
    "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG": {
      "enabled": True
    }
    "a735c56ea4014685bc74c0a375236cc5": {
      "enabled": False
    }
  }
  "id": "f534c6e0ebba4d70b2b4c31659e50952",
  "error": 0
}

Subowners are always assigned a secret API key even if the subowner cannot use it due to the lack of permissions.

/api2/subowners/list

Lists all subowners for your account.

Response Parameter

Type

Description

subowners

list

Subowner objects (each is like subowners/get response)

Sample request/response:

The Call() function, which is imported from uplynk_api2_auth module, prepares the message body and digital signature.

from uplynk_api2_auth import Call

print(Call('/api2/subowners/list'))

{
  "subowners": [
    {
      "username": "ptvn.dave",
      "api_key": "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG",
      "all_api_keys": {
        "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG": {
          "enabled": True
        }
        "a735c56ea4014685bc74c0a375236cc5": {
          "enabled": False
        }
      }
      "id": "f534c6e0ebba4d70b2b4c31659e50952",
      "permissions": [
        "slice"
      ]
    }
  ],
  "error": 0
}

/api2/subowners/update

Modifies an existing subowner.

Request Parameter

Type

Description

id

string

Subowner ID

password

string

(optional) New password to set

Do not use this password to authenticate a Live Slicer to your account. Please use an API key instead. Leverage this endpoint to only authorize this subowner to perform slicer-related actions by only granting the "slice" permission to a subowner.

permissions

list

(optional) Permissions granted to this subowner

Learn more.

newkey

integer

(optional) Pass 1 to have the system generate a new secret API key.

Response: See subowners/get API.

Sample request/response:

The Call() function, which is imported from uplynk_api2_auth module, prepares the message body and digital signature.

from uplynk_api2_auth import Call

print(Call('/api2/subowners/update', id='f534c6e0ebba4d70b2b4c31659e50952',
                               permissions=['slice'], newkey=1))

{
  "username": "ptvn.dave",
  "permissions": [
    "slice"
  ],
  "api_key": "dDd3IAo63+IrP5TqRYRnH03gtdcsRpap5lpnlQ7G",
  "all_api_keys": {
    "dyWViZwTqm/etPT4SB0sTdfz2msh3D9u+iihl4dG": {
      "enabled": True
    }
    "a735c56ea4014685bc74c0a375236cc5": {
      "enabled": False
    }
  }
  "id": "f534c6e0ebba4d70b2b4c31659e50952",
  "error": 0
}

/api2/subowners/delete

Erases a subowner.

Request Parameter

Type

Description

id

string

Subowner ID

A response parameter is described below.

Response Parameter

Type

Description

msg

string

Confirmation that the subowner was erased

Sample request/response:

The Call() function, which is imported from uplynk_api2_auth module, prepares the message body and digital signature.

from uplynk_api2_auth import Call

print(Call('/api2/subowners/delete', id='f534c6e0ebba4d70b2b4c31659e50952'))

{
  "msg": "Deleted",
  "error": 0
}