Flix API (7.1.0)

Download OpenAPI specification:Download

The Flix API is available separately under Foundry's proprietary license.

Legacy Documentation

If you are looking for API documentation for Flix versions prior to 6.5, please go to the legacy documentation site.

Introduction

This document describes how to interact with the Flix RESTful API. It should give you a good basis to work from to be able to execute common tasks required to automate some Flix server-side features.

Flix is a story development hub for animated film and TV, gaming, and other visual narrative mediums. Watch the video below for a brief overview of how Flix works.

Getting started

We recommend to take a look at our flix-scripts repository on GitHub. This repository contains a handful of useful scripts written in Python. These scripts are free to be modified and adjusted to your own needs, and should be a very useful baseline to start from.

The /info endpoint serves as a good starting point to get acquainted with the Flix API. This endpoint behaves differently depending on if you are authorized or not. You can make a request to this endpoint with no Authorization header, and it will return a JSON response announcing the server name. However, if you make a request to the same endpoint with an authenticated signature, you will receive a JSON response containing more information about the Flix server.

One of
name
string
Default: "flix"

The server name configured for this server.

Example
{
  • "name": "flix"
}

Once you have both unauthenticated and authenticated requests working, you are all set to use the other endpoints available.

Authentication

A user can be authenticated with Flix via three mechanisms:

  • Username and password
  • Google OAuth token
  • LDAP

The /methods endpoint can be used to identify whether OAuth tokens can be used for authentication.

Once a user has been successfully authenticated using one of these methods, Flix will return an access key, which the client must use to authorize any future requests:

id
string

A public, unique identifier of this access key.

secret_access_key
string

Used to sign requests to authenticate the user. Should be kept secret.

created_date
string <date-time>

The date the access key was created.

expiry_date
string <date-time>

The date the access key will become invalid.

object (User)

The user that the access key is associated with.

{
  • "id": "rbcnnb5MrWHW19Y76tjy",
  • "secret_access_key": "35Pt4rkxefpuISF8eetmBJpnSyM7zEAz4x0FE0j3",
  • "created_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "owner": {
    }
}

Sign in as a Flix or LDAP user

This endpoint will authenticate your username and password credentials, and provide an authentication key for you to use in subsequent API requests. This endpoint is the sole endpoint to use basic authentication.

Each user may only have one access key. Subsequent requests to this endpoint will invalidate any previously created keys.

Authorizations:
BasicAuth

Responses

Request samples

import requests.auth

API_BASE = "http://localhost:8080"
USERNAME = "admin"
PASSWORD = "admin"

if __name__ == "__main__":
    response = requests.post(f"{API_BASE}/authenticate", auth=(USERNAME, PASSWORD))

    if response.status_code == 201:
        print("Successfully logged in.")
        data = response.json()
        print("Access key ID:", data["id"])
        print("Secret access key:", data["secret_access_key"])
    else:
        print("Error when logging in:", response.json()["message"])

Response samples

Content type
application/json
{
  • "id": "rbcnnb5MrWHW19Y76tjy",
  • "secret_access_key": "35Pt4rkxefpuISF8eetmBJpnSyM7zEAz4x0FE0j3",
  • "created_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "owner": {
    }
}

Sign in with Google

This endpoint will authenticate the user as a Google user, and provide an authentication key for you to use in subsequent API requests. The token expected by this endpoint should be generated by authenticating with Google using OAuth 2.0.

Authorizations:
Google
Request Body schema: application/json
provider
required
string

What provider to use for OAuth authentication.

Responses

Request samples

Content type
application/json
{
  • "provider": "Google"
}

Response samples

Content type
application/json
{
  • "id": "rbcnnb5MrWHW19Y76tjy",
  • "secret_access_key": "35Pt4rkxefpuISF8eetmBJpnSyM7zEAz4x0FE0j3",
  • "created_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "owner": {
    }
}

Fetch login methods configuration

Provides the permitted OAuth and SSO configurations for the server network. This can be used to determine whether a server network permits Google authentication, for example.

This information is available without logging in first.

Responses

Response samples

Content type
application/json
{
  • "oauth_enabled": true,
  • "oauth_domain": "my_domain.com",
  • "oauth_providers": [
    ],
  • "sso_enabled": true
}

Extend session

Extend the session of a currently authenticated user by extending the expiry time of their access key by 24 hours.

This will return an error if the user has not been authenticated yet; otherwise returns the extended access key.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "id": "rbcnnb5MrWHW19Y76tjy",
  • "secret_access_key": "35Pt4rkxefpuISF8eetmBJpnSyM7zEAz4x0FE0j3",
  • "created_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "owner": {
    }
}

Sign out

Delete the access key provided in the request URL, effectively signing out the user it is associated with.

This endpoint is only permitted for admins.

Authorizations:
SignedAuth
path Parameters
keyID
required
string[a-zA-Z0-9]+
Example: blwO9ngeNXfkAafy40qi

Authentication key.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "invalid credentials",
  • "status_code": 401
}

Authorization

Flix endpoints can be categorised as follows:

  1. Authentication endpoints: These are endpoints used to authenticate a client and that return an access key, as described in Authentication.
  2. Public endpoints: These are endpoints that do not require authentication. For instance, they may return different data depending on if you are authenticated or not, or they return information required for the authentication process.
  3. Signed endpoints: These endpoints require requests to be signed using the secret access key returned during authentication. They constitute the majority of the endpoints in the Flix API.

In this section, we describe how to access signed endpoints, along with recommendations on how best to handle the access key from a security point of view.

Security recommendations

The access key ID and secret access key should only be stored for the current session, and discarded once the session ends. Access keys have a finite duration, so we recommend obtaining and cycling them regularly, which can be done using the /authenticate/extend endpoint.

Do not store or persist access keys to disk or share them with any other user.

We recommend you configure SSL/TLS to encrypt your HTTP API.

Flix API signing process

To access a signed endpoint, the client must present its access key ID, along with a signature of the request. The signature is a concatenation of data such as the request body, request path and the current time, hashed using the secret access key. A new signature must be generated for each request. If the client presents the server with an incorrect signature, the request will be rejected with a 403 error.

It is very important to understand that these requests are time sensitive and therefore require clocks on client and server machines to be correctly set. They do not have to be in the same timezone, but they must present an accurate time. If the client's clock differs from the server's by more than 15 minutes, the request will be rejected.

See the /info endpoint for an example of the signing process.

Example code

To make it as simple as possible for developers to get started using the Flix API we have provided example scripts for interacting with the API.

There is an example which specifically demonstrates how requests are signed, and all the code you need to make signed requests using Python. If you wish to use a different language, please get in contact via the Flix support portal.

Server information

Get information about a server

Returns information about the server serving this endpoint. The amount of information returned depends on the privileges of the requesting user.

Authorizations:
NoneSignedAuth

Responses

Request samples

import base64
import datetime
import hmac

import requests

API_BASE = "http://localhost:8080"
# the access key details returned by /authenticate
# should never be stored in a file in practice
ACCESS_KEY_ID = "jUiy2miRpcpwOMFQJKd1"
SECRET_ACCESS_KEY = "hz24ocDYifCdndmaMSnKIjqAX75BofaJ43hMOGAN"
# the date format that must be used for the request signature
DATE_FORMAT = "%Y-%m-%dT%H:%M:%SZ"


def get_time_rfc3999():
    utc_now = datetime.datetime.now(datetime.timezone.utc)
    return utc_now.strftime(DATE_FORMAT)


def get_signature(
    # the secret part of the access key returned on successful authentication
    secret_access_key,
    # the HTTP method, e.g. GET, POST, DELETE, PUT or PATCH
    method,
    # the request body
    body,
    # the value of the Content-Type header for the request, e.g. application/json
    content_type,
    # the current UTC time in RFC 3339 format, e.g. 2009-11-10T23:00:00Z
    utc_time,
    # the path to request, not including server name or query parameters
    path,
):
    content = method + "\n"

    if len(body) > 0:
        content += body + "\n"
        content += content_type + "\n"
    else:
        content += "\n\n"

    content += utc_time + "\n"
    content += path

    signature = hmac.digest(secret_access_key.encode(), content.encode(), "sha256")
    return base64.b64encode(signature).decode()


if __name__ == "__main__":
    method = "GET"
    path = "/info"
    utc_time = get_time_rfc3999()

    signature = get_signature(SECRET_ACCESS_KEY, method, "", "", utc_time, path)
    headers = {
        "X-Date": utc_time,
        "Authorization": "FNAUTH {}:{}".format(ACCESS_KEY_ID, signature),
    }

    response = requests.get(f"{API_BASE}{path}", headers=headers)
    if response.status_code == 200:
        print("Flix version:", response.json()["version"])
    else:
        print("Error:", response.json()["message"])

Response samples

Content type
application/json
Example
{
  • "name": "flix"
}

Fetch the server logs

Returns the server logs as a data stream.

Authorizations:
SignedAuth
query Parameters
limitKb
integer
Example: limitKb=1000

The max number of kilobytes of data to return.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Fetch the OpenAPI schema

Fetch the OpenAPI compliant schema in YAML format.

Authorizations:
SignedAuth

Responses

Fetch the server configuration

Authorizations:
SignedAuth
path Parameters
serverID
required
string[a-zA-Z0-9-]+
Example: cd846267-7e85-457b-b9fe-d2715f0c6757

ID of the server.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "region": "default",
  • "ip": "192.168.1.104",
  • "port": 8080,
  • "running": true,
  • "start_date": "2019-08-24T14:15:22Z",
  • "hostname": "flix-001.example.com",
  • "db_ident": "0dde4ef9-aa06-4517-b678-1829b7e9950a",
  • "is_ssl": true,
  • "transfer_port": 9091,
  • "proxy_host": "proxy.flix.com",
  • "proxy_port": 9090,
  • "proxy_transfer_port": 9293
}

Fetch running servers

Fetch all servers currently marked as "running". This response reads from a time limited cache and may require a few minutes after a server becomes online or offline before it is included in the response.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "servers": [
    ]
}

User and group management

Group filtering

Some endpoints may take an optional permissions query parameter to filter groups. This parameter should be a Base64-encoded JSON object with the following format:

name
string

Name is the name of the permission.

mask
integer

The permission mask for this permission.

{
  • "name": "flix::/shows",
  • "mask": 35
}

Create a new user

Authorizations:
SignedAuth
Request Body schema: application/json
created_date
string <date-time>

When the user was created.

deleted
boolean

Whether the user has been deleted.

email
string

The user's email.

Array of objects (GroupRolePairList)

What groups are assigned to the user.

id
integer

A globally unique ID for the user.

is_admin
boolean

True if the user is an administrator.

is_system
boolean

True if the user is a system user. Generally only true for the user "system".

is_third_party
boolean

True if the user comes from a third-party user management system, such as OAuth or LDAP.

password
string

The user's password, only set by the client when creating or updating a user's password. It is never set by the server.

type
string
Enum: "flix" "ldap" "oauth"

The type of user.

username
string

The username of the user.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "created_date": "2019-08-24T14:15:22Z",
  • "deleted": true,
  • "email": "user@example.com",
  • "groups": [
    ],
  • "id": 50,
  • "is_admin": true,
  • "is_system": true,
  • "is_third_party": true,
  • "password": "hunter2",
  • "type": "flix",
  • "username": "flixuser",
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "created_date": "2019-08-24T14:15:22Z",
  • "deleted": true,
  • "email": "user@example.com",
  • "groups": [
    ],
  • "id": 50,
  • "is_admin": true,
  • "is_system": true,
  • "is_third_party": true,
  • "password": "hunter2",
  • "type": "flix",
  • "username": "flixuser",
  • "metadata": [
    ]
}

Update a user

Updates a user's data. A regular user can only edit their own data. Administrators can edit all users.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

Request Body schema: application/json
created_date
string <date-time>

When the user was created.

deleted
boolean

Whether the user has been deleted.

email
string

The user's email.

Array of objects (GroupRolePairList)

What groups are assigned to the user.

id
integer

A globally unique ID for the user.

is_admin
boolean

True if the user is an administrator.

is_system
boolean

True if the user is a system user. Generally only true for the user "system".

is_third_party
boolean

True if the user comes from a third-party user management system, such as OAuth or LDAP.

password
string

The user's password, only set by the client when creating or updating a user's password. It is never set by the server.

type
string
Enum: "flix" "ldap" "oauth"

The type of user.

username
string

The username of the user.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "created_date": "2019-08-24T14:15:22Z",
  • "deleted": true,
  • "email": "user@example.com",
  • "groups": [
    ],
  • "id": 50,
  • "is_admin": true,
  • "is_system": true,
  • "is_third_party": true,
  • "password": "hunter2",
  • "type": "flix",
  • "username": "flixuser",
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "created_date": "2019-08-24T14:15:22Z",
  • "deleted": true,
  • "email": "user@example.com",
  • "groups": [
    ],
  • "id": 50,
  • "is_admin": true,
  • "is_system": true,
  • "is_third_party": true,
  • "password": "hunter2",
  • "type": "flix",
  • "username": "flixuser",
  • "metadata": [
    ]
}

Delete a user

Soft deletes a user by setting the deleted field to true.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "bad request",
  • "status_code": 400
}

Fetch a users groups

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

Responses

Response samples

Content type
application/json
{
  • "groups": [
    ]
}

Fetch a users group-roles

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

Responses

Response samples

Content type
application/json
{
  • "groups": [
    ]
}

Fetch all users

Fetch an array of all users, excluding system users.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Create a new user group

Authorizations:
SignedAuth
Request Body schema: application/json
id
integer

A globally unique ID of the group.

title
required
string

The name of the group.

Responses

Request samples

Content type
application/json
{
  • "id": 1,
  • "title": "default"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "title": "default"
}

Update a user group

Authorizations:
SignedAuth
path Parameters
groupId
required
integer
Example: 1

ID of the group.

Request Body schema: application/json
id
integer

A globally unique ID of the group.

title
required
string

The name of the group.

Responses

Request samples

Content type
application/json
{
  • "id": 1,
  • "title": "default"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "title": "default"
}

Delete a user group

Permanently delete a user group from the database. This endpoint will error if there is at least one user still assigned to the group. This action is irreversible.

Authorizations:
SignedAuth
path Parameters
groupId
required
integer
Example: 1

ID of the group.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "bad request",
  • "status_code": 400
}

Fetch all user groups

Fetch all groups to which the user belongs. For admin users, this will return all groups stored in Flix.

Authorizations:
SignedAuth
query Parameters
permissions
string
Example: permissions=eyJuYW1lIjogImZsaXg6Oi91c2VycyIsICJtYXNrIjogNH0K

A Base64-encoded permission object in the JSON format described in Group filtering. If specified, only items where the logged in user has the specified permission will be returned.

Responses

Response samples

Content type
application/json
{
  • "groups": [
    ]
}

Fetch all groups with additional details

Fetch all groups with additional structured data. This includes all shows which are assigned to each group and all users with the relevant role pairing.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "groups": [
    ]
}

Fetch all logged in users

Fetch all active access keys.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "access_keys": [
    ]
}

Fetch metadata for a user

If a metadata field name is provided, this endpoint returns a single field. Otherwise, a list of all metadata for the object is returned.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
Example
[ ]

Partially update metadata for a user

Updates the metadata for the object while leaving fields not included in the request unchanged.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

Request Body schema: application/json
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Replace metadata for a user

When providing a list of metadata, updates the metadata for the object, removing any fields not specified. When operating on a single field, the field will be replaced or created as needed, while leaving other metadata fields unchanged.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Request Body schema: application/json
One of
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
Example
[ ]

Delete metadata for a user

Deletes a single field from the object's metadata list.

Authorizations:
SignedAuth
path Parameters
userId
required
integer
Example: 25

ID of the user.

query Parameters
name
required
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Permission management

Create a new role

Creates a new role which may have one or more permissions associated with it.

Authorizations:
SignedAuth
Request Body schema: application/json
id
integer

The unique ID of the role.

name
string

The human-readable name of the role.

Array of objects (PermissionList)

A list of permissions associated with this role.

Responses

Request samples

Content type
application/json
{
  • "id": 2,
  • "name": "Regular user",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 2,
  • "name": "Regular user",
  • "permissions": [
    ]
}

Delete a role

Deletes a role and all associated permissions.

Authorizations:
SignedAuth
path Parameters
roleID
required
integer
Example: 3

ID of the role

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Update a role

Updates a role, changing its name and replacing all existing permissions.

Authorizations:
SignedAuth
path Parameters
roleID
required
integer
Example: 3

ID of the role

Request Body schema: application/json
id
integer

The unique ID of the role.

name
string

The human-readable name of the role.

Array of objects (PermissionList)

A list of permissions associated with this role.

Responses

Request samples

Content type
application/json
{
  • "id": 2,
  • "name": "Regular user",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 2,
  • "name": "Regular user",
  • "permissions": [
    ]
}

Fetch user permissions for a show

Returns the permission mask for all assigned permissions for the user within the specified show.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "permissions": {
    }
}

Fetch global user permissions

Returns the combined permissions from all roles the user is assigned to.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "permissions": {
    }
}

Get permission mask masks

Get an array of permission mask masks. These describe which permission bits can be set on which permission objects. This endpoint returns all permissions recognised by the server.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "masks": [
    ]
}

Fetch all roles

Returns all defined roles and their permissions.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "roles": [
    ]
}

Notification preferences

Flix allows for users to manage their own notification preferences. These notification preferences define whether Flix is permitted to send a notification Type, with a classifying Action to a given user, for a given show association.

Flix only sends notifications to users who have explicit access to shows, via a user group association. This means that while 'admin' users can access all shows, they will not receive notifications unless they are assigned to a show, via a user group, as well as having 'admin' status.

Fetch all notification preferences

Returns all notification preferences associated with the logged in user.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "notification_preferences": [
    ]
}

Updates multiple notification preferences

Update multiple notification preferences in one request. Any preferences not included in the PUT request will be unchanged.

Authorizations:
SignedAuth
Request Body schema: application/json
Array of objects (NotificationPreference)

Responses

Request samples

Content type
application/json
{
  • "notification_preferences": [
    ]
}

Response samples

Content type
application/json
{
  • "notification_preferences": [
    ]
}

Update a notification preference

Authorizations:
SignedAuth
Request Body schema: application/json
object (User)

The User to which this preference applies.

object (Show)

The Show to which this preference applies.

type
string
Value: "email"

The method by which a Notification is sent.

action
string
Enum: "publish to editorial" "publish from editorial"

The classification notification.

permitted
boolean

Whether the Notification can be sent.

Responses

Request samples

Content type
application/json
{
  • "user": {
    },
  • "show": {
    },
  • "type": "email",
  • "action": "publish to editorial",
  • "permitted": true
}

Response samples

Content type
application/json
{
  • "user": {
    },
  • "show": {
    },
  • "type": "email",
  • "action": "publish to editorial",
  • "permitted": true
}

Settings

Fetch all settings

Fetches all settings, for all shows and at a studio level

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "studio": [
    ],
  • "show": {
    }
}

Add or update a show setting

Patches a show setting. If the setting is not found, it will be added.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
Array
Key
string
Value
string
Enabled
boolean

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "settings": [
    ]
}

Add or update a studio setting

Patches a studio setting. If the setting is not found, it will be added.

Authorizations:
SignedAuth
Request Body schema: application/json
Array
Key
string
Value
string
Enabled
boolean

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "settings": [
    ]
}

Debugging

Verify that a server is running

This is a debug endpoint that requires no authentication and does nothing aside from returning a string response. It can be used to verify that a Flix server is running.

Responses

Response samples

Content type
application/json
"I'm a teapot"

Webhooks

General

The Flix server provides a limited number of events which can be subscribed to by webhooks. Webhooks can be registered with the Flix server, after which any time an event occurs on the Flix server for which this webhook is subscribed to, a payload will be POSTed to the URL provided in the webhook.

Security

When it is first created, the webhook object will be returned from the Flix server with a secret key (36-bit). This is the only time this secret is accessible via the API. Please make a note of the secret key at the time the webhook is registered.

When a payload is sent to a webhook URL, it will include a header which can be used to verify the origin of the message: X-Flix-signature-256 This is a hex-digest string of the SHA265 hash of the message, using the secret key as the key.

Publish to editorial Webhook

This event will be triggered when a sequence revision is published to editorial.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

A sequence revision has been published to editorial

Array of objects (MediaObject)
event_type
string

Which webhook event has occurred

object (Sequence)

A collection of sequence revisions.

object ($defs-SequenceRevision)

Represents a single revision of a sequence.

object (Show)

Represents a show in Flix.

target_app
string
Enum: "premiere" "avid"
object (User)

A Flix user.

Responses

Request samples

Content type
application/json
{
  • "created_media_objects": [
    ],
  • "event_type": "string",
  • "sequence": {
    },
  • "sequence_revision": {
    },
  • "show": {
    },
  • "target_app": "premiere",
  • "user": {
    }
}

Publish to Flix Webhook

This event will be triggered when a publish to Flix from editorial occurs.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

A sequence revision has been created via a publish back to Flix

event_type
string

Which webhook event has occurred

object ($defs-SequenceRevision)

Represents a single revision of a sequence.

object (Sequence)

A collection of sequence revisions.

object (Show)

Represents a show in Flix.

source_app
string
Enum: "premiere" "avid"
object (User)

A Flix user.

Responses

Request samples

Content type
application/json
{
  • "event_type": "Publish to Flix",
  • "new_sequence_revision": {
    },
  • "sequence": {
    },
  • "show": {
    },
  • "source_app": "premiere",
  • "user": {
    }
}

Export to SBP Webhook

This event will be triggered when a sequence revision is exported to Storyboard Pro.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

A sequence revision has been exported to Storyboard Pro

event_type
string

Which webhook event has occurred

object ($defs-SequenceRevision)

The sequence revision which was sent to StoryBoard Pro

Responses

Request samples

Content type
application/json
{
  • "event_type": "Sequence revision sent to SBP",
  • "sequence_revision": {
    }
}

An error occurred Webhook

This event will be triggered when an error occurs and is logged to the server logs. This will always be a recovered error.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

An error occurred

message
string
fields
object
event_type
string

Which webhook event has occurred

Responses

Request samples

Content type
application/json
{
  • "message": "string",
  • "fields": { },
  • "event_type": "An error occurred"
}

Panel revision created Webhook

This event will be triggered when a panel revision is created. This event may happen very frequently, and may be triggered in large amounts. It is important that any webhook service subscribing to this event is able to handle the high levels of potential activity.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

A panel revision has been created. This event may occur frequently and in large batches.

event_type
string

Which webhook event has occurred

object (PanelRevision)

As a single revision of a panel, containing information about its artwork and relation to other panel revisions.

Responses

Request samples

Content type
application/json
{
  • "event_type": "Panel revision created",
  • "panel_revision": {
    }
}

Manual ping event Webhook

This event can be used to test connectivity between the Flix server and a webhook service listening for other webhooks. It can be triggered via the Flix API.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

Ping was triggered

event_time
string <date-time>

The time the event was triggered.

event_type
string

Which webhook event has occurred

object (User)

The user who triggered the event.

Responses

Request samples

Content type
application/json
{
  • "event_time": "2019-08-24T14:15:22Z",
  • "event_type": "Ping",
  • "user": {
    }
}

Sequence revision created Webhook

This event will be triggered when a panel revision is created.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

Sequence revision created

event_type
string

Which webhook event has occurred.

object ($defs-SequenceRevision)

The sequence revision which has just been created.

Responses

Request samples

Content type
application/json
{
  • "event_type": "Sequence revision created",
  • "sequence_revision": {
    }
}

Contact sheet created Webhook

This event will be triggered when a contact sheet is exported.

Authorizations:
SignedAuth
header Parameters
X-Flix-Event
required
string
Example: Ping

Which webhook event has occurred

Request Body schema: application/json

Contact sheet created

event_type
string

Which webhook event has occurred

object (Show)

The show holding the sequence revision this contact sheet was created from.

object (Sequence)

The sequence holding the sequence revision this contact sheet was created from.

object ($defs-SequenceRevision)

The sequence revision the contact sheet was created from.

object (Asset)

The asset holding the contact sheet PDF media object.

object (User)

The user that exported the contact sheet.

Responses

Request samples

Content type
application/json
{
  • "event_type": "Contact sheet created",
  • "show": {
    },
  • "sequence": {
    },
  • "sequence_revision": {
    },
  • "asset": {
    },
  • "user": {
    }
}

Register a new webhook

Authorizations:
SignedAuth
Request Body schema: application/json
id
integer

The unique ID stored in the Flix database.

name
string

The user set short description of the webhook.

Array of objects (Event)

The list of events which will trigger this webhook to be fired.

protocol
string
Enum: "TCP" "UDP"

The protocol which the Flix server should use to send the payload to the URL.

url
string

The address the Flix server should send the payload to, when the webhook is fired.

object (User)

The user that created this webhook.

skip_tls
boolean

Whether to skip the TLS verification when sending a webhook event payload to a server with HTTPS. This should be set to true if using self-signed certificates.

retry_count
integer

The number of times Flix will attempt to POST a webhook event payload to a URL before it logs an error and stops.

email_on_failure
boolean

If set to true will email all admin users if the webhook fails to deliver the payload to the URL. If RetryCount is greater than 0, the email will only be sent after all retries have been attempted.

disabled
boolean

If set will mean the webhook will not be triggered from any event except pings.

Responses

Request samples

Content type
application/json
{
  • "id": 74,
  • "name": "My first webhook",
  • "events": [
    ],
  • "protocol": "TCP",
  • "user": {
    },
  • "skip_tls": true,
  • "retry_count": 3,
  • "email_on_failure": false,
  • "disabled": false
}

Response samples

Content type
application/json
{
  • "id": 74,
  • "name": "My first webhook",
  • "events": [
    ],
  • "protocol": "TCP",
  • "user": {
    },
  • "skip_tls": true,
  • "retry_count": 3,
  • "email_on_failure": false,
  • "disabled": false,
  • "secret": "9600ee5d-1c66-4d31-b2c3-97ef4a25d053"
}

Fetch webhook creation form

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "elements": [
    ]
}

Delete a webhook

Authorizations:
SignedAuth
path Parameters
webhookId
required
integer
Example: 3

ID of the webhook.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Fetch a webhook

Authorizations:
SignedAuth
path Parameters
webhookId
required
integer
Example: 3

ID of the webhook.

Responses

Response samples

Content type
application/json
{
  • "id": 74,
  • "name": "My first webhook",
  • "events": [
    ],
  • "protocol": "TCP",
  • "user": {
    },
  • "skip_tls": true,
  • "retry_count": 3,
  • "email_on_failure": false,
  • "disabled": false
}

Ping a webhook

Triggers a manual Ping webhook event, the payload for which will be POSTed to the webhook matching the ID provided.

Authorizations:
SignedAuth
path Parameters
webhookId
required
integer
Example: 3

ID of the webhook.

Responses

Response samples

Content type
application/json
{
  • "status": "200 OK",
  • "webhook": {
    }
}

Modify a webhook

Authorizations:
SignedAuth
path Parameters
webhookId
required
integer
Example: 3

ID of the webhook.

Request Body schema: application/json
id
integer

The unique ID stored in the Flix database.

name
string

The user set short description of the webhook.

Array of objects (Event)

The list of events which will trigger this webhook to be fired.

protocol
string
Enum: "TCP" "UDP"

The protocol which the Flix server should use to send the payload to the URL.

url
string

The address the Flix server should send the payload to, when the webhook is fired.

object (User)

The user that created this webhook.

skip_tls
boolean

Whether to skip the TLS verification when sending a webhook event payload to a server with HTTPS. This should be set to true if using self-signed certificates.

retry_count
integer

The number of times Flix will attempt to POST a webhook event payload to a URL before it logs an error and stops.

email_on_failure
boolean

If set to true will email all admin users if the webhook fails to deliver the payload to the URL. If RetryCount is greater than 0, the email will only be sent after all retries have been attempted.

disabled
boolean

If set will mean the webhook will not be triggered from any event except pings.

Responses

Request samples

Content type
application/json
{
  • "id": 74,
  • "name": "My first webhook",
  • "events": [
    ],
  • "protocol": "TCP",
  • "user": {
    },
  • "skip_tls": true,
  • "retry_count": 3,
  • "email_on_failure": false,
  • "disabled": false
}

Response samples

Content type
application/json
{
  • "id": 74,
  • "name": "My first webhook",
  • "events": [
    ],
  • "protocol": "TCP",
  • "user": {
    },
  • "skip_tls": true,
  • "retry_count": 3,
  • "email_on_failure": false,
  • "disabled": false
}

Fetch all webhooks

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "webhooks": {
    }
}

Contact sheets

Create a contact sheet template

Authorizations:
SignedAuth
Request Body schema: application/json
id
integer

A unique ID for this contact sheet template.

name
string

A human-readable description of this contact sheet template.

created_date
string <date-time>

When this contact sheet template was created.

modified_date
string <date-time>

When this contact sheet template was modified.

object (User)

The user that created this contact sheet template.

Array of objects (Show)

The shows that this contact sheet template is assigned to.

orientation
integer
Enum: 0 1

The orientation of each page: landscape (0) or portrait (1).

object (PageSize)

The size of each page in portrait mode.

style
integer
Enum: 0 1 2

How to lay out the panels on each page: single panel (0), grid (1) or list (2).

columns
integer

The number of panel columns on each page in grid or list mode.

rows
integer

The number of panel rows on each page in grid mode.

panel_options
Array of strings (PanelOptionList)
Items Enum: "panel id" "panel number" "dialogue" "highlight tag" "new marker" "panel duration" "annotations" "date and time"

A list of display options for the panels.

show_header
boolean

Whether to show a header on each page.

show_comments
boolean

Whether to show the revision comment in the header.

show_watermark
boolean

Whether to show a watermark on each panel.

show_company
boolean

Whether to show the company logo on each panel.

show_cover
boolean

Whether to include a cover page.

cover_options
Array of strings (CoverOptionList)
Items Enum: "show name" "sequence name" "revision" "revision comment"

A list of options for the cover page.

cover_description
string

A string to print on the cover page.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Fetch a contact sheet template

Authorizations:
SignedAuth
path Parameters
contactSheetId
required
integer
Example: 4

ID of the contact sheet template.

Responses

Response samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Update selected fields of a contact sheet template

Authorizations:
SignedAuth
path Parameters
contactSheetId
required
integer
Example: 4

ID of the contact sheet template.

Request Body schema: application/json
id
integer

A unique ID for this contact sheet template.

name
string

A human-readable description of this contact sheet template.

created_date
string <date-time>

When this contact sheet template was created.

modified_date
string <date-time>

When this contact sheet template was modified.

object (User)

The user that created this contact sheet template.

Array of objects (Show)

The shows that this contact sheet template is assigned to.

orientation
integer
Enum: 0 1

The orientation of each page: landscape (0) or portrait (1).

object (PageSize)

The size of each page in portrait mode.

style
integer
Enum: 0 1 2

How to lay out the panels on each page: single panel (0), grid (1) or list (2).

columns
integer

The number of panel columns on each page in grid or list mode.

rows
integer

The number of panel rows on each page in grid mode.

panel_options
Array of strings (PanelOptionList)
Items Enum: "panel id" "panel number" "dialogue" "highlight tag" "new marker" "panel duration" "annotations" "date and time"

A list of display options for the panels.

show_header
boolean

Whether to show a header on each page.

show_comments
boolean

Whether to show the revision comment in the header.

show_watermark
boolean

Whether to show a watermark on each panel.

show_company
boolean

Whether to show the company logo on each panel.

show_cover
boolean

Whether to include a cover page.

cover_options
Array of strings (CoverOptionList)
Items Enum: "show name" "sequence name" "revision" "revision comment"

A list of options for the cover page.

cover_description
string

A string to print on the cover page.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Update all fields of a contact sheet template

Authorizations:
SignedAuth
path Parameters
contactSheetId
required
integer
Example: 4

ID of the contact sheet template.

Request Body schema: application/json
id
integer

A unique ID for this contact sheet template.

name
string

A human-readable description of this contact sheet template.

created_date
string <date-time>

When this contact sheet template was created.

modified_date
string <date-time>

When this contact sheet template was modified.

object (User)

The user that created this contact sheet template.

Array of objects (Show)

The shows that this contact sheet template is assigned to.

orientation
integer
Enum: 0 1

The orientation of each page: landscape (0) or portrait (1).

object (PageSize)

The size of each page in portrait mode.

style
integer
Enum: 0 1 2

How to lay out the panels on each page: single panel (0), grid (1) or list (2).

columns
integer

The number of panel columns on each page in grid or list mode.

rows
integer

The number of panel rows on each page in grid mode.

panel_options
Array of strings (PanelOptionList)
Items Enum: "panel id" "panel number" "dialogue" "highlight tag" "new marker" "panel duration" "annotations" "date and time"

A list of display options for the panels.

show_header
boolean

Whether to show a header on each page.

show_comments
boolean

Whether to show the revision comment in the header.

show_watermark
boolean

Whether to show a watermark on each panel.

show_company
boolean

Whether to show the company logo on each panel.

show_cover
boolean

Whether to include a cover page.

cover_options
Array of strings (CoverOptionList)
Items Enum: "show name" "sequence name" "revision" "revision comment"

A list of options for the cover page.

cover_description
string

A string to print on the cover page.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "name": "4x4 grid",
  • "created_date": "2019-08-24T14:15:22Z",
  • "modified_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "shows": [
    ],
  • "orientation": 0,
  • "page_size": {
    },
  • "style": 1,
  • "columns": 4,
  • "rows": 4,
  • "panel_options": [
    ],
  • "show_header": true,
  • "show_comments": false,
  • "show_watermark": true,
  • "show_company": true,
  • "show_cover": true,
  • "cover_options": [
    ],
  • "cover_description": "Lorem ipsum dolor sit amet"
}

Delete a contact sheet template

Authorizations:
SignedAuth
path Parameters
contactSheetId
required
integer
Example: 4

ID of the contact sheet template.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Fetch all contact sheets

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "contact_sheets": [
    ]
}

Fetch contact sheets assigned to a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "contact_sheets": [
    ]
}

Preview a contact sheet template

This endpoint will generate a sample contact sheet using the given template and mock data. The sample sheet will be returned as a PNG image.

Authorizations:
SignedAuth
query Parameters
data
required
string
Example: data=eyJuYW1lIjogIlNpbmdsZSBTY3JlZW4gKExhbmRzY2FwZSkiLCAib3JpZW50YXRpb24iOiAwLCAicGFnZV9zaXplIjogeyJ3aWR0aCI6IDIxMCwgImhlaWdodCI6IDI3OX0sICJzdHlsZSI6IDAsICJjb2x1bW5zIjogMywgInJvd3MiOiAyLCAicGFuZWxfb3B0aW9ucyI6IFsicGFuZWwgaWQiLCAicGFuZWwgbnVtYmVyIiwgImRpYWxvZ3VlIiwgImhpZ2hsaWdodCB0YWciLCAibmV3IG1hcmtlciIsICJwYW5lbCBkdXJhdGlvbiIsICJhbm5vdGF0aW9ucyIsICJkYXRlIGFuZCB0aW1lIl0sICJzaG93X2hlYWRlciI6IHRydWUsICJzaG93X2NvbW1lbnRzIjogdHJ1ZSwgInNob3dfd2F0ZXJtYXJrIjogdHJ1ZSwgInNob3dfY29tcGFueSI6IHRydWUsICJzaG93X2NvdmVyIjogdHJ1ZSwgImNvdmVyX29wdGlvbnMiOiBbInNob3cgbmFtZSIsICJzZXF1ZW5jZSBuYW1lIiwgInJldmlzaW9uIiwgInJldmlzaW9uIGNvbW1lbnQiXSwgImNvdmVyX2Rlc2NyaXB0aW9uIjogIiJ9

A Base64-encoded contact sheet template in JSON format.

width
integer
Default: 500
Example: width=500

The width of the image to generate in pixels.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "bad request",
  • "status_code": 400
}

Fetch contact sheet template creation form

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "elements": [
    ]
}

Extensions

Extensions

Flix supports the installation and management of third-party application extensions. Extensions packages can be imported to Flix by placing the compressed extension-package to the server-side directory thirdparty/extensions. The Flix Server will automatically import this file, and it will be accessible via the Flix Client extensions GUI.

The Flix Server supports the following extension formats:

  • .tar
  • .tar.gz
  • .zip

Fetch all extensions imported to the server

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "extensions": [
    ]
}

Archiving

Archive a show

Creates an archive of a show containing its data and assets in a format that can be restored using a different Flix version or instance.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
skip_transcoded_files
boolean

Whether files generated by transcoding, e.g. thumbnails, should be skipped in order to produce a smaller archive file. If true, the files will be generated by transcoding when the show is restored.

delete_after_archive
boolean

Indicates that the show should be deleted following a successful archival.

run_on
string <uuid> (uuid) ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Overrides the internal load balancing, forcing the server to run the job chain on the server matching the UUID. If the server with that ID is not contactable, the server receiving the request will run the job chain locally. If this field is omitted, the server receiving the request will load balance the job chain.

Responses

Request samples

Content type
application/json
{
  • "skip_transcoded_files": true,
  • "delete_after_archive": true,
  • "run_on": "ca934aea-4a53-41ad-8186-8aa4e01ddde0"
}

Response samples

Content type
application/json
"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Restore a show from an archive

Creates a new show and populates it with the data and assets from the given archive.

Authorizations:
SignedAuth
Request Body schema: application/json
archive_path
string

The path to the archive on the server.

run_on
string <uuid> (uuid) ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Overrides the internal load balancing, forcing the server to run the job chain on the server matching the UUID. If the server with that ID is not contactable, the server receiving the request will run the job chain locally. If this field is omitted, the server receiving the request will load balance the job chain. The restore paths endpoint provides a list of servers and their available restorable file paths. When making a show restore request, ensure the RunOn value matches the appropriate server ID as provided from the paths endpoint.

Responses

Request samples

Content type
application/json
{
  • "archive_path": "/flix/backups/archive_15_2024-03-14 10:17:47.db",
  • "run_on": "ca934aea-4a53-41ad-8186-8aa4e01ddde0"
}

Response samples

Content type
application/json
"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Fetch all available archive paths

Fetches all archive file paths from the backup directory which can be used in a restore show post request.

Authorizations:
SignedAuth

Responses

Response samples

Content type
application/json
{
  • "archives": [
    ]
}

Shows

A show in Flix can hold either a list of sequences (for non-episodic shows), or a list of episodes that in turn contain sequences (for episodic shows).

Create a show

Authorizations:
SignedAuth
Request Body schema: application/json
id
integer

A unique ID for this show.

aspect_ratio
required
number

The aspect ratio for this show.

created_date
string <date-time>

When this show was created.

description
string

A description of this show.

episodic
boolean

Whether this is an episodic show.

frame_rate
required
number

The framerate of this show in frames per second.

Array of objects (UserGroup)

A list of groups associated with this show.

hidden
boolean

Whether this show is hidden.

required
object (User)

The user that created this show.

show_thumbnail_id
integer

The ID of the media object holding the thumbnail for this show.

title
required
string

The title of this show.

tracking_code
required
string [ 1 .. 10 ] characters

The tracking code of this show.

state
string
Enum: "active" "archiving" "archived" "deleting" "restoring" "archive_errored" "restore_errored" "delete_errored"

The current state of the show, whether active or in the process of archiving, or archived. A show which is not active will return a 422 HTTP error on any request.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Fetch a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Update a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
id
integer

A unique ID for this show.

aspect_ratio
required
number

The aspect ratio for this show.

created_date
string <date-time>

When this show was created.

description
string

A description of this show.

episodic
boolean

Whether this is an episodic show.

frame_rate
required
number

The framerate of this show in frames per second.

Array of objects (UserGroup)

A list of groups associated with this show.

hidden
boolean

Whether this show is hidden.

required
object (User)

The user that created this show.

show_thumbnail_id
integer

The ID of the media object holding the thumbnail for this show.

title
required
string

The title of this show.

tracking_code
required
string [ 1 .. 10 ] characters

The tracking code of this show.

state
string
Enum: "active" "archiving" "archived" "deleting" "restoring" "archive_errored" "restore_errored" "delete_errored"

The current state of the show, whether active or in the process of archiving, or archived. A show which is not active will return a 422 HTTP error on any request.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Delete an archived show

Deletes the show from the database, along with any sequences, panels and on-disk asset files owned by the show. Only available if the show has been archived or if it's a show that failed to restore from an archive. This endpoint will return a task ID that can be used to poll for the status of the job.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Fetch all unhidden shows

Fetches the first 500 unhidden shows. It is not currently possible to retrieve more than 500 shows.

Authorizations:
SignedAuth
query Parameters
display_hidden
boolean
Enum: true false
Example: display_hidden=true

Whether to show hidden items.

permissions
string
Example: permissions=eyJuYW1lIjogImZsaXg6Oi91c2VycyIsICJtYXNrIjogNH0K

A Base64-encoded permission object in the JSON format described in Group filtering. If specified, only items where the logged in user has the specified permission will be returned.

Responses

Response samples

Content type
application/json
{
  • "shows": [
    ]
}

Fetch metadata for a show

If a metadata field name is provided, this endpoint returns a single field. Otherwise, a list of all metadata for the object is returned.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
Example
[ ]

Partially update metadata for a show

Updates the metadata for the object while leaving fields not included in the request unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Replace metadata for a show

When providing a list of metadata, updates the metadata for the object, removing any fields not specified. When operating on a single field, the field will be replaced or created as needed, while leaving other metadata fields unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Request Body schema: application/json
One of
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
Example
[ ]

Delete metadata for a show

Deletes a single field from the object's metadata list.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
name
required
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Unlock a show

Update a show from any of the locked states to make it active and accessible.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "id": 3,
  • "aspect_ratio": 1.85,
  • "created_date": "2019-08-24T14:15:22Z",
  • "description": "A story about a traveller and her talking motorcycle.",
  • "episodic": true,
  • "frame_rate": 24,
  • "groups": [
    ],
  • "hidden": true,
  • "owner": {
    },
  • "show_thumbnail_id": 1001,
  • "title": "Kino's Journey",
  • "tracking_code": "kin",
  • "state": "active",
  • "metadata": [
    ]
}

Episodes

Create an episode

Creates a new episode within a show. Only valid if the show is episodic. Will respond with the hydrated episode object.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
id
integer

A unique ID for the episode.

show_id
integer

The ID of the show this episode belongs to.

created_date
string <date-time>

When the episode was created.

episode_number
integer

The number of the episode within the show.

required
object (User)

The user that created the show.

description
string

A description for the episode. Currently unused.

title
required
string

The title of the episode.

tracking_code
string

The tracking code of the episode.

Array of objects (Sequence)

The sequences contained in this episode.

hidden
boolean

Whether this episode is marked as hidden.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 30,
  • "show_id": 5,
  • "created_date": "2019-08-24T14:15:22Z",
  • "episode_number": 4,
  • "owner": {
    },
  • "description": "string",
  • "title": "Land of Adults (Natural Right)",
  • "tracking_code": "0400",
  • "sequences": [
    ],
  • "hidden": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 30,
  • "show_id": 5,
  • "created_date": "2019-08-24T14:15:22Z",
  • "episode_number": 4,
  • "owner": {
    },
  • "description": "string",
  • "title": "Land of Adults (Natural Right)",
  • "tracking_code": "0400",
  • "sequences": [
    ],
  • "hidden": true,
  • "metadata": [
    ]
}

Fetch an episode

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "id": 30,
  • "show_id": 5,
  • "created_date": "2019-08-24T14:15:22Z",
  • "episode_number": 4,
  • "owner": {
    },
  • "description": "string",
  • "title": "Land of Adults (Natural Right)",
  • "tracking_code": "0400",
  • "sequences": [
    ],
  • "hidden": true,
  • "metadata": [
    ]
}

Update an episode

Updates an episode, replacing any existing values for the episode of the given ID.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

Request Body schema: application/json
id
integer

A unique ID for the episode.

show_id
integer

The ID of the show this episode belongs to.

created_date
string <date-time>

When the episode was created.

episode_number
integer

The number of the episode within the show.

required
object (User)

The user that created the show.

description
string

A description for the episode. Currently unused.

title
required
string

The title of the episode.

tracking_code
string

The tracking code of the episode.

Array of objects (Sequence)

The sequences contained in this episode.

hidden
boolean

Whether this episode is marked as hidden.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 30,
  • "show_id": 5,
  • "created_date": "2019-08-24T14:15:22Z",
  • "episode_number": 4,
  • "owner": {
    },
  • "description": "string",
  • "title": "Land of Adults (Natural Right)",
  • "tracking_code": "0400",
  • "sequences": [
    ],
  • "hidden": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 30,
  • "show_id": 5,
  • "created_date": "2019-08-24T14:15:22Z",
  • "episode_number": 4,
  • "owner": {
    },
  • "description": "string",
  • "title": "Land of Adults (Natural Right)",
  • "tracking_code": "0400",
  • "sequences": [
    ],
  • "hidden": true,
  • "metadata": [
    ]
}

Fetch all episodes in a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "episodes": [
    ]
}

Fetch all episodes in a show Deprecated

This endpoint is identical to /show/{showID}/episodes.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "episodes": [
    ]
}

Fetch metadata for an episode

If a metadata field name is provided, this endpoint returns a single field. Otherwise, a list of all metadata for the object is returned.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
Example
[ ]

Partially update metadata for an episode

Updates the metadata for the object while leaving fields not included in the request unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

Request Body schema: application/json
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Replace metadata for an episode

When providing a list of metadata, updates the metadata for the object, removing any fields not specified. When operating on a single field, the field will be replaced or created as needed, while leaving other metadata fields unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Request Body schema: application/json
One of
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
Example
[ ]

Delete metadata for an episode

Deletes a single field from the object's metadata list.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

query Parameters
name
required
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Non-episodic sequences

These endpoints concern managing sequences and sequence revisions within non-episodic shows.

Create a new sequence

Create a new sequence in the show. A show can contain a maximum of 500 sequences. This endpoint will return an error if a show already contains 500 sequences.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Request Body schema: application/json
id
integer

A unique ID of the sequence.

show_id
integer
episode_id
integer
created_date
string <date-time>

When the sequence was created.

required
object (User)

The user that created the sequence.

revisions_count
integer

The number of revisions of this sequence.

panel_revision_count
integer

The number of unique panel IDs contained in this sequence.

deleted
boolean

Whether this sequence has been soft deleted. Currently unused.

description
required
string

A description of the sequence.

tracking_code
string

This sequence's tracking code.

hidden
boolean

Whether this sequence has been hidden.

object (ColourTag)

The highlight colour for the sequence.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Fetch a sequence

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Update a sequence

This endpoint will update the following properties:

  • Description
  • Metadata
  • Tracking code
Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

Request Body schema: application/json
id
integer

A unique ID of the sequence.

show_id
integer
episode_id
integer
created_date
string <date-time>

When the sequence was created.

required
object (User)

The user that created the sequence.

revisions_count
integer

The number of revisions of this sequence.

panel_revision_count
integer

The number of unique panel IDs contained in this sequence.

deleted
boolean

Whether this sequence has been soft deleted. Currently unused.

description
required
string

A description of the sequence.

tracking_code
string

This sequence's tracking code.

hidden
boolean

Whether this sequence has been hidden.

object (ColourTag)

The highlight colour for the sequence.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Delete a sequence

Soft delete a sequence. This sets the deleted property to true.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "bad request",
  • "status_code": 400
}

Fetch all sequences in a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
display_hidden
boolean
Enum: true false
Example: display_hidden=true

Whether to show hidden items.

page
integer
Example: page=3

What page to return. When possible, avoid in favour of after/before.

per_page
integer
Example: per_page=100

The number of items per page to return.

metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "sequences": [
    ]
}

Create a new sequence revision

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

Request Body schema: application/json
show_id
integer

The ID of the show this sequence revision belongs to.

sequence_id
integer

The ID of the sequence this sequence revision belongs to.

revision
integer

What revision within the sequence this is.

object (User)

The user that created the sequence.

created_date
string <date-time>

When the revision was created.

Array of objects (SequencePanel)

A list of panels in this sequence revision.

comment
string

A comment describing this sequence revision.

published
boolean

Whether this sequence revision has been published to editorial.

imported
boolean

Whether this sequence revision has been imported from editorial.

task_id
string

The ID of the job chain that published this sequence revision.

Array of objects (Asset)

The assets holding the source files of this sequence revision, if any.

object (ColourTag)

The highlight colour for the sequence revision.

hidden
boolean

Whether this sequence revision is marked as hidden.

autosave
boolean

Whether this sequence revision was created by an autosave action in the Flix Client. This field cannot be patched.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Fetch a sequence revision

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Update a sequence revision comment

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

Request Body schema: application/json
show_id
integer

The ID of the show this sequence revision belongs to.

sequence_id
integer

The ID of the sequence this sequence revision belongs to.

revision
integer

What revision within the sequence this is.

object (User)

The user that created the sequence.

created_date
string <date-time>

When the revision was created.

Array of objects (SequencePanel)

A list of panels in this sequence revision.

comment
string

A comment describing this sequence revision.

published
boolean

Whether this sequence revision has been published to editorial.

imported
boolean

Whether this sequence revision has been imported from editorial.

task_id
string

The ID of the job chain that published this sequence revision.

Array of objects (Asset)

The assets holding the source files of this sequence revision, if any.

object (ColourTag)

The highlight colour for the sequence revision.

hidden
boolean

Whether this sequence revision is marked as hidden.

autosave
boolean

Whether this sequence revision was created by an autosave action in the Flix Client. This field cannot be patched.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Fetch all revisions of a sequence

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

partial
boolean
Default: false
Enum: true false
Example: partial=true

Whether to return a sparse object.

Responses

Response samples

Content type
application/json
{
  • "sequence_revisions": [
    ]
}

Fetch all latest revisions in a show.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

Responses

Response samples

Content type
application/json
{
  • "sequence_revisions": [
    ]
}

Fetch metadata for a sequence

If a metadata field name is provided, this endpoint returns a single field. Otherwise, a list of all metadata for the object is returned.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
Example
[ ]

Partially update metadata for a sequence

Updates the metadata for the object while leaving fields not included in the request unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

Request Body schema: application/json
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Replace metadata for a sequence

When providing a list of metadata, updates the metadata for the object, removing any fields not specified. When operating on a single field, the field will be replaced or created as needed, while leaving other metadata fields unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Request Body schema: application/json
One of
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
Example
[ ]

Delete metadata for a sequence

Deletes a single field from the object's metadata list.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
name
required
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Fetch metadata for a sequence revision

If a metadata field name is provided, this endpoint returns a single field. Otherwise, a list of all metadata for the object is returned.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
Example
[ ]

Partially update metadata for a sequence revision

Updates the metadata for the object while leaving fields not included in the request unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

Request Body schema: application/json
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Replace metadata for a sequence revision

When providing a list of metadata, updates the metadata for the object, removing any fields not specified. When operating on a single field, the field will be replaced or created as needed, while leaving other metadata fields unchanged.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

query Parameters
name
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Request Body schema: application/json
One of
Array
name
string

The user defined indexable name of the field. Each metadata field value must have a name unique to the entity. For example, a Sequence cannot have more than one metadata field named 'scene'

boolean or string or number or integer or any or string or Array of strings

The value of the metadata field. Value can be set to null to represent an unset value.

value_type
string
Enum: "bool" "datetime" "float" "int" "object" "string" "stringarray"

The name of the type this Field's Value takes.

created_date
string <date-time>

Set automatically at the metadata fields creation; it is immutable.

modified_date
string <date-time>

Set automatically every time the metadata field is updated in the database; it is immutable.

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
Example
[ ]

Delete metadata for a sequence revision

Deletes a single field from the object's metadata list.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

query Parameters
name
required
string
Example: name=comment

The name of a metadata field. If provided, the endpoint will return or modify a single field rather than a list of metadata fields.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "forbidden",
  • "status_code": 403
}

Episodic sequences

These endpoints concern managing sequences and sequence revisions within episodic shows.

Create a new sequence

Create a new sequence in the show. A show can contain a maximum of 500 sequences. This endpoint will return an error if a show already contains 500 sequences.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

Request Body schema: application/json
id
integer

A unique ID of the sequence.

show_id
integer
episode_id
integer
created_date
string <date-time>

When the sequence was created.

required
object (User)

The user that created the sequence.

revisions_count
integer

The number of revisions of this sequence.

panel_revision_count
integer

The number of unique panel IDs contained in this sequence.

deleted
boolean

Whether this sequence has been soft deleted. Currently unused.

description
required
string

A description of the sequence.

tracking_code
string

This sequence's tracking code.

hidden
boolean

Whether this sequence has been hidden.

object (ColourTag)

The highlight colour for the sequence.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Fetch a sequence

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Update a sequence

This endpoint will update the following properties:

  • Description
  • Metadata
  • Tracking code
Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

Request Body schema: application/json
id
integer

A unique ID of the sequence.

show_id
integer
episode_id
integer
created_date
string <date-time>

When the sequence was created.

required
object (User)

The user that created the sequence.

revisions_count
integer

The number of revisions of this sequence.

panel_revision_count
integer

The number of unique panel IDs contained in this sequence.

deleted
boolean

Whether this sequence has been soft deleted. Currently unused.

description
required
string

A description of the sequence.

tracking_code
string

This sequence's tracking code.

hidden
boolean

Whether this sequence has been hidden.

object (ColourTag)

The highlight colour for the sequence.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 20,
  • "show_id": 4,
  • "episode_id": 7,
  • "created_date": "2019-08-24T14:15:22Z",
  • "owner": {
    },
  • "revisions_count": 6,
  • "panel_revision_count": 777,
  • "deleted": true,
  • "description": "Scene 1",
  • "tracking_code": "0100",
  • "hidden": true,
  • "colour_tag": {
    },
  • "metadata": [
    ]
}

Delete a sequence

Soft delete a sequence. This sets the deleted property to true.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

Responses

Response samples

Content type
application/json
{
  • "error_number": 0,
  • "message": "bad request",
  • "status_code": 400
}

Fetch all sequences in a show

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

query Parameters
display_hidden
boolean
Enum: true false
Example: display_hidden=true

Whether to show hidden items.

page
integer
Example: page=3

What page to return. When possible, avoid in favour of after/before.

per_page
integer
Example: per_page=100

The number of items per page to return.

metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "sequences": [
    ]
}

Fetch all sequences in an episode

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

query Parameters
display_hidden
boolean
Enum: true false
Example: display_hidden=true

Whether to show hidden items.

page
integer
Example: page=3

What page to return. When possible, avoid in favour of after/before.

per_page
integer
Example: per_page=100

The number of items per page to return.

metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "sequences": [
    ]
}

Create a new sequence revision

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

Request Body schema: application/json
show_id
integer

The ID of the show this sequence revision belongs to.

sequence_id
integer

The ID of the sequence this sequence revision belongs to.

revision
integer

What revision within the sequence this is.

object (User)

The user that created the sequence.

created_date
string <date-time>

When the revision was created.

Array of objects (SequencePanel)

A list of panels in this sequence revision.

comment
string

A comment describing this sequence revision.

published
boolean

Whether this sequence revision has been published to editorial.

imported
boolean

Whether this sequence revision has been imported from editorial.

task_id
string

The ID of the job chain that published this sequence revision.

Array of objects (Asset)

The assets holding the source files of this sequence revision, if any.

object (ColourTag)

The highlight colour for the sequence revision.

hidden
boolean

Whether this sequence revision is marked as hidden.

autosave
boolean

Whether this sequence revision was created by an autosave action in the Flix Client. This field cannot be patched.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Fetch a sequence revision

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

Responses

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Update a revision comment

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

revisionId
required
integer
Example: 1

ID of the sequence or panel revision.

Request Body schema: application/json
show_id
integer

The ID of the show this sequence revision belongs to.

sequence_id
integer

The ID of the sequence this sequence revision belongs to.

revision
integer

What revision within the sequence this is.

object (User)

The user that created the sequence.

created_date
string <date-time>

When the revision was created.

Array of objects (SequencePanel)

A list of panels in this sequence revision.

comment
string

A comment describing this sequence revision.

published
boolean

Whether this sequence revision has been published to editorial.

imported
boolean

Whether this sequence revision has been imported from editorial.

task_id
string

The ID of the job chain that published this sequence revision.

Array of objects (Asset)

The assets holding the source files of this sequence revision, if any.

object (ColourTag)

The highlight colour for the sequence revision.

hidden
boolean

Whether this sequence revision is marked as hidden.

autosave
boolean

Whether this sequence revision was created by an autosave action in the Flix Client. This field cannot be patched.

Array of objects (FieldList)

A list of metadata fields for this object.

Responses

Request samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{
  • "show_id": 3,
  • "sequence_id": 5,
  • "revision": 8,
  • "owner": {
    },
  • "created_date": "2019-08-24T14:15:22Z",
  • "revisioned_panels": [
    ],
  • "comment": "Final version",
  • "published": true,
  • "imported": true,
  • "task_id": "a8966643-a199-448e-812a-9ae404cfa692",
  • "source_files": [
    ],
  • "colour_tag": {
    },
  • "hidden": true,
  • "autosave": true,
  • "metadata": [
    ]
}

Fetch all revisions of a sequence

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

sequenceId
required
integer
Example: 50

ID of the sequence.

query Parameters
metadata
boolean
Default: true
Enum: true false

Whether to include metadata.

partial
boolean
Default: false
Enum: true false
Example: partial=true

Whether to return a sparse object.

Responses

Response samples

Content type
application/json
{
  • "sequence_revisions": [
    ]
}

Fetch all latest revisions in a show.

Authorizations:
SignedAuth
path Parameters
showId
required
integer
Example: 3

ID of the show.

episodeId
required
integer
Example: 100

ID of the episode.

Responses

Response samples

Content type
application/json
{
  • "sequence_revisions": [