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.
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.
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 |
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 }
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.
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 }
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 |
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 }
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 }