# API

{% hint style="danger" %}
Since PlayoutBee is still in Beta, this API is still subject to change, but the main functions should be stable
{% endhint %}

### The PlayoutBee API is split into these categories:&#x20;

[#transport-functions](#transport-functions "mention")

[#asset-functions](#asset-functions "mention")

[#info-functions](#info-functions "mention")

[#raspberrypi-specific-api](#raspberrypi-specific-api "mention")

[#windows-and-macos-api](#windows-and-macos-api "mention")

### Transport Functions

## Play

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/play`

This endpoint will send the Play Command.

{% tabs %}
{% tab title="200 " %}

```
 e
```

{% endtab %}
{% endtabs %}

## Pause

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/pause`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Stop

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/stop`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## goes to the next Clip

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/next`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## goes to the previous Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/prev`

## Select Clip

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/select/{Index}`

Select's the Current Clip by Index

#### Path Parameters

| Name  | Type    | Description                          |
| ----- | ------- | ------------------------------------ |
| Index | integer | 0 Based index of the Asset to select |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Goto specifc timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/goto/{ms}`

#### Path Parameters

| Name                                 | Type   | Description                                                               |
| ------------------------------------ | ------ | ------------------------------------------------------------------------- |
| ms<mark style="color:red;">\*</mark> | String | Timestamp to go to in ms or leading with a \[+/-] for incremental changes |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Goto last X Seconds

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/last/{ms}`

#### Path Parameters

| Name                                 | Type  | Description                              |
| ------------------------------------ | ----- | ---------------------------------------- |
| ms<mark style="color:red;">\*</mark> | float | seconds to go before the end of an asset |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Asset Functions

All Asset commands also accept "next", "prev" or "current" as Index&#x20;

## Upload Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/upload`

uploads an Asset and adds it to the playlist

#### Request Body

| Name  | Type   | Description                               |
| ----- | ------ | ----------------------------------------- |
| files | object | an Array of files that should be uploaded |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Selects the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/select`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Enables the Asset and puts it into the rotation

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/enable`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Disable the Asset and removes it from the rotation

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/disable`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Volume of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/volume/{volume}`

#### Path Parameters

| Name                                    | Type   | Description                                                                                                                      |
| --------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"                                                                                  |
| volume                                  | String | Volume of the Asset either a float between 0 and 1 or a float between 0 and 1 with a \[+/-] sign infront for incremental changes |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Action of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/action/{action}`

set's the Action for the Asset&#x20;

#### Path Parameters

| Name                                    | Type   | Description                                                                   |
| --------------------------------------- | ------ | ----------------------------------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"                               |
| action                                  | String | <p>0 = Pause<br>1 = PlayNext </p><p>2 = Next</p><p>3 = Loop <br>4 = Reset</p> |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Rotation of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/rotate/{rotation}`

#### Path Parameters

| Name                                    | Type   | Description                                        |
| --------------------------------------- | ------ | -------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"    |
| rotation                                | String | <p>One of these : <br>0 <br>90 <br>180 <br>270</p> |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Sets the InPoint to the current timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/inPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Sets the OutPoint to the current timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/outPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Resets the Inpoint of the current Asset&#x20;

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/resetinPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Resets the Outpoint of the current Asset&#x20;

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/resetOutPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Info Functions

## get all of the Assets&#x20;

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/assets`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## get the current Player State

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/player`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## get the current Player State

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/settings`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## the current Version of Playoutbee

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/version`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## responds with Pong to the response

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/ping`

{% tabs %}
{% tab title="200: OK "pong"" %}

{% endtab %}
{% endtabs %}

## the currentTime of the Asset

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/currentTime`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## RaspberryPI Specific API

## opens the Chrome Browser for PlayoutBee to Output on the Pi

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/openOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Shutsdown the RaspberryPi

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/shutdown`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Windows & MacOS API

## Move Output to Screen

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/moveOutput/{id}`

#### Query Parameters

| Name                               | Type   | Description                                      |
| ---------------------------------- | ------ | ------------------------------------------------ |
| <mark style="color:red;">\*</mark> | String | Index of the Screen the Output should be sent to |

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Fullscreen Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/fullscreenOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/toggleFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Enable Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/enableFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Disable the Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/disableFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Output always beeing on Top

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/alwaysOnTop`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Prevent Sleep Setting

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/preventSleep`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Opens the OutputWindow if it isn't Open already

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/openOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Moves the Output window to x / y and resizes it to W and H

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/moveOutput/{x}/{y}/{w}/{y}`

#### Path Parameters

| Name | Type   | Description                       |
| ---- | ------ | --------------------------------- |
| x    | String | X in Pixels for the Output Window |
| y    | String | Y in Pixels for the Output Window |
| w    | String | Width of the Output Window        |
| h    | String | Height of the Output Window       |

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}
