# PPV

Методы: [create](#create) | [update](#update) | [delete](#delete) | [list](#list) | [addmedia](#addmedia) | [deletemedia](#deletemedia) | [listmedia](#listmedia) | [addbuyer](#addbuyer) | [updatebuyer](#updatebuyer) | [deletebuyer](#deletebuyer) | [listbuyers](#listbuyers) | [contacts](#contacts) | [updatecontacts](#updatecontacts)

## create

*Создание подписки*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **name** (Название подписки)
* *String* **subscription_type** (Варианты: **subscription** — платный доступ, **password** — доступ по паролю, **collection** — форма регистрации)

Обязательные параметры (частично опциональны):

* *Integer* **period** (Период подписки в днях)
* *Date* **access_expire** (Дата окончания доступа в формате ГГГГ-ММ-ДД, например 2018-12-31. Можно также указать точное время: ГГГГ-ММ-ДД Ч:М:С)

Необязательные параметры:

* *String* **type** (Тип подписки). Варианты: **single**, **group**. По умолчанию: **single**
* *String* **description** (Описание подписки)
* *String* **collection_type** (Только для subscription_type=collection. Варианты: **collect** — доступ после заполнения формы, **protect** — проверка в списке клиентов)
* *Double* **cost** (Стоимость подписки)
* *Date* **access_start** (Дата начала доступа в формате ГГГГ-ММ-ДД)
* *Integer* **activation** (Количество активаций пароля)
* *String* **materials** (Дополнительные материалы)
* *String* **buy_redirect_url** (URL перенаправления после покупки)
* *String* **custom_url** (Ссылка для письма)
* *Boolean* **ip_recovery** (Восстановление сессии по IP)
* *Boolean* **device_ban** (Запрет одновременного доступа с нескольких устройств)
* *Boolean* **buyer_commission** (Установка комиссии платежного шлюза на покупателя)
* *Boolean* **downloadable_origin** (Разрешить скачивание видео. Только без DRM)
* *Integer* **preview** (Время предпросмотра до запроса оплаты.)
* *Boolean* **watermark** (Включить водяной знак. Только с DRM)
* *Boolean* **watermark_email** (Показывать email клиента как водяной знак. Только с DRM)
* *Boolean* **watermark_name** (Показывать имя клиента как водяной знак. Только с DRM)
* *Boolean* **watermark_ip** (Показывать IP клиента как водяной знак. Только с DRM)
* *Enum* **publish_type** (Показывать контент в Личном кабинете покупателя. Значения: **private** - не показывать, доступ только по ссылке. **personal** - показывать в личном кабинете покупателя. По умолчанию: **private**)

#### Выходные параметры

* *String* **Code** (Код подписки)
* *String* **Name** (Название подписки)
* *String* **Type** (Тип подписки)
* *Double* **Cost** (Стоимость подписки)
* *Integer* **Period** (Период подписки)
* *DateTime* **AccessExpirationDate** (Дата окончания доступа)
* *String* **Description** (Описание подписки)

Пример запроса:

```text
https://boomstream.com/api/ppv/create?apikey=[API_KEY]&name=ppv&type=group&cost=100.00&period=1&description=some%20text
```

Пример ответа:

```xml
<Response>
  <Items>
    <Item>
      <Code>X150Kl1d</Code>
      <Name>ppv</Name>
      <Type>group</Type>  
      <Cost>100.00</Cost>
      <Period>1</Period>
      <AccessExpirationDate>2018-12-12 23:59:00</AccessExpirationDate>
      <Description>some text</Description>
      <PublishType>private</PublishType>
    </Item>
  </Items>
  <Status>Success</Status>
</Response>
```

## update

*Обновление информации о подписке*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)

Необязательные параметры:

* *String* **name** (Название подписки)
* *Double* **cost** (Стоимость подписки)
* *String* **collection_type** (Только для subscription_type=collection. Варианты: **collect**, **protect**)
* *Integer* **period** (Период подписки)
* *Date* **access_expire** (Дата окончания доступа)
* *Date* **access_start** (Дата начала доступа)
* *String* **description** (Описание подписки)
* *Integer* **activation** (Количество активаций пароля)
* *String* **materials** (Дополнительные материалы)
* *String* **buy_redirect_url** (URL перенаправления после покупки)
* *String* **custom_url** (Ссылка для письма)
* *Boolean* **ip_recovery** (Восстановление сессии по IP)
* *Boolean* **device_ban** (Запрет одновременного доступа с нескольких устройств)
* *Boolean* **buyer_commission** (Установка комиссии платежного шлюза на покупателя)
* *Boolean* **downloadable_origin** (Разрешить скачивание видео. Только без DRM)
* *Integer* **preview** (Время предпросмотра)
* *Boolean* **watermark** (Включить водяной знак. Только с DRM)
* *Boolean* **watermark_email** (Показывать email как водяной знак. Только с DRM)
* *Boolean* **watermark_name** (Показывать имя как водяной знак. Только с DRM)
* *Boolean* **watermark_ip** (Показывать IP как водяной знак. Только с DRM)
* *Enum* **publish_type** (Показывать контент в Личном кабинете покупателя. Значения: **private** - не показывать, доступ только по ссылке. **personal** - показывать в личном кабинете покупателя. По умолчанию: **private**)


#### Выходные параметры

* *String* **Name** (Название подписки)
* *Double* **Cost** (Стоимость подписки)
* *Integer* **Period** (Период подписки)
* *DateTime* **AccessExpirationDate** (Дата окончания доступа)
* *String* **Description** (Описание подписки)

Пример запроса:

```text
https://boomstream.com/api/ppv/update?apikey=[API_KEY]&code=X150Kl1d&name=payperview&cost=500.00&period=10&description=text
```

Пример ответа:

```xml
<Response>
  <Items>
    <Item>
      <Code>X150Kl1d</Code>
      <Name>payperview</Name>
      <Cost>500.00</Cost>
      <Period>10</Period>
      <AccessExpirationDate>2018-12-12 23:59:00</AccessExpirationDate>
      <Description>text</Description>
      <PublishType>private</PublishType>
    </Item>
  </Items>
  <Status>Success</Status>
</Response>
```

## delete

*Удаление подписки*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)

Пример запроса:

```text
https://boomstream.com/api/ppv/delete?apikey=[API_KEY]&code=X150Kl1d
```

Пример ответа:

```xml
<Response>
  <Status>Success</Status>
</Response>
```

## list

*Получение списка подписок*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)

#### Выходные параметры

* *String* **Name** (Название подписки)
* *String* **Code** (Код подписки)
* *Double* **Cost** (Стоимость подписки)
* *Integer* **Period** (Период подписки)
* *DateTime* **AccessExpirationDate** (Дата окончания доступа)
* *Integer* **AmountFiles** (Количество файлов)
* *String* **Type** (Тип подписки)
* *String* **AddedDate** (Дата создания)
* *String* **Description** (Описание)

Пример запроса:

```text
https://boomstream.com/api/ppv/list?apikey=[API_KEY]
```

Пример ответа:

```xml
<Response>
  <Items>   
    <Item>
      <Name>ppv</Name>
      <Code>X150Kl1d</Code>
      <Cost>100.00</Cost>
      <Period>100.00</Period>
      <AccessExpirationDate>2018-12-12 23:59:00</AccessExpirationDate>
      <AmountFiles>4</AmountFiles>
      <Type>group</Type>
      <AddedDate>2015-12-12 23:23:23</AddedDate>
      <Description>Test</Description>
    </Item>
  </Items>  
  <Status>Success</Status>
</Response>
```

## addmedia

*Добавление медиафайла в подписку*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **media** (Код медиафайла)

#### Выходные параметры

* *String* **Title** (Название медиафайла)
* *String* **Code** (Код медиафайла)
* *String* **Type** (Тип медиафайла)
* *Integer* **Width** (Ширина видео)
* *Integer* **Height** (Высота видео)
* *String* **MediaStatus** (Статус обработки)
* *Integer* **Duration** (Длительность)
* *String* **PlayerCode** (HTML-код плеера)
* *String* **DownloadLink** (Ссылка для скачивания)
* *Object* **Poster** (Информация о посте)
* *Array* **Transcodes** (Список транскодированных версий)
* *Object* **Adaptive** (URL адаптивного потока)
* *Array* **Screenshots** (Список скриншотов)

Пример запроса:

```text
https://boomstream.com/api/ppv/addmedia?apikey=[API_KEY]&code=X150Kl1d&media=xxxxxxxx
```

Пример ответа:

```xml
<Response>
  <Medias>
    <Item>
      <Title>Тестовое видео</Title>
      <Code>xxxxxxxx</Code>
      <PublishKey></PublishKey>
      <OnlineStatus>False</OnlineStatus>
      <RecordStatus>False</RecordStatus>
      <Concurrent>0</Concurrent>
      <CreationDate>2015-01-29 15:05:58</CreationDate>
      <Type>video</Type>
      <Width>640</Width>
      <Height>480</Height>
      <MediaStatus>Done</MediaStatus>
      <Duration>14</Duration>
      <PlayerCode>&amp;lt;iframe ...... &amp;lt;/iframe&amp;gt;</PlayerCode>
      <DownloadLink>https://bs.boomstream.com/balancer/hash:1234567890/xxxxxxxx.orig</DownloadLink>
      <Poster>
        <Code>xxxxxxxx-a1</Code>
        <Width>640</Width>
        <Height>480</Height>
        <Url>https://bs.boomstream.com/balancer/xxxxxxxx-a1.jpg</Url>
      </Poster>
      <Transcodes>
        <Item>
          <Code>xxxxxxxx-f33ubar5</Code>
          <Title>240p</Title>
          <Width>320</Width>
          <Height>240</Height>
          <PseudoMP4>https://bs.boomstream.com/balancer/xxxxxxxx-f33ubar5.mp4</PseudoMP4>
          <AppleHLS>https://bs.boomstream.com/balancer/xxxxxxxx-f33ubar5/playlist.m3u8</AppleHLS>
        </Item>
      </Transcodes>
      <Adaptive>
        <AppleHLS>https://bs.boomstream.com/adaptive/xxxxxxxx/playlist.m3u8</AppleHLS>
      </Adaptive>
      <Screenshots>
        <Item>
          <Code>xxxxxxxx-a1</Code>
          <Width>640</Width>
          <Height>480</Height>
          <Url>https://bs.boomstream.com/balancer/xxxxxxxx-a1.jpg</Url>
        </Item>
      </Screenshots>
    </Item>
  </Medias>
  <Status>Success</Status>
</Response>
```

## deletemedia

*Удаление медиафайла из подписки*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **media** (Код медиафайла)

Пример запроса:

```text
https://boomstream.com/api/ppv/deletemedia?apikey=[API_KEY]&code=X150Kl1d&media=xxxxxxxx
```

Пример ответа:

```xml
<Response>
  <Status>Success</Status>
</Response>
```

## listmedia

*Получение списка медиафайлов из подписки*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)

Необязательные параметры:

* *Integer* **limit** (Количество элементов)
* *Integer* **offset** (Смещение)

#### Выходные параметры

Структура идентична методу [addmedia](#addmedia).

Пример запроса:

```text
https://boomstream.com/api/ppv/listmedia?apikey=[API_KEY]&code=X150Kl1d
```

## addbuyer

*Добавление покупателя в подписку*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **media** (Код медиафайла)
* *Boolean* **notification** (Отправить уведомление на email)

Альтернативные параметры (обязателен один из):

* *String* **email** (Email покупателя)
* *String* **phone** (Телефон покупателя)

Необязательные параметры:

* *String* **name** (Имя покупателя)
* *Integer* **activation** (Количество активаций пароля)
* *Date* **access_start** (Дата начала доступа)
* *Date* **access_expire** (Дата окончания доступа)
* *String* **custom_url** (Ссылка для письма)
* *Boolean* **use_subscription_custom_url** (Использовать ссылку из подписки)

#### Выходные параметры

* *String* **Email** (Email покупателя)
* *String* **Hash** (Пароль доступа)
* *Integer* **Period** (Период подписки)
* *DateTime* **AccessStartDate** (Дата начала доступа)
* *DateTime* **AccessExpirationDate** (Дата окончания доступа)
* *DateTime* **DatePurchase** (Дата покупки)

Пример запроса:

```text
https://boomstream.com/api/ppv/addbuyer?apikey=[API_KEY]&code=X150Kl1d&media=xxxxxxxx&email=example@example.com&notification=1
```

Пример ответа:

```xml
<Response>
<Items>
    <Item>
      <Email>example@example.com</Email>
      <Hash>123456789</Hash>
      <Period>30</Period>
      <AccessStartDate>2018-12-11 23:59:00</AccessStartDate>
      <AccessExpirationDate>2018-12-12 23:59:00</AccessExpirationDate>
      <DatePurchase>2015-01-29 15:05:58</DatePurchase>
    </Item>
  </Items>
  <Status>Success</Status>
</Response>
```

## updatebuyer

*Обновление пароля доступа*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **hash** (Пароль доступа)

Необязательные параметры:

* *String* **name** (Имя покупателя)
* *Date* **access_start** (Дата начала доступа)
* *Date* **access_expire** (Дата окончания доступа)
* *Integer* **activation** (Количество активаций пароля)

Пример запроса:

```text
https://boomstream.com/api/ppv/updatebuyer?apikey=[API_KEY]&code=X150Kl1d&hash=12345678&activation=4&access_expire=2018-12-31
```

Пример ответа:

```xml
<Response>
    <Message>Recovery code is updated</Message>
    <Status>Success</Status>
</Response>
```

## deletebuyer

*Удаление пароля доступа*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **hash** (Пароль доступа)

Пример запроса:

```text
https://boomstream.com/api/ppv/deletebuyer?apikey=[API_KEY]&code=X150Kl1d&hash=12345678
```

Пример ответа:

```xml
<Response>
    <Message>Recovery code is deleted</Message>
    <Status>Success</Status>
</Response>
```

## listbuyers

*Список всех покупателей подписки*

> **Примечание:** Текущая версия — 1.1. Используйте `&ver=1.1` в запросе.

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **code** (Код подписки)
* *String* **media** (Код медиафайла)

Необязательные параметры:

* *String* **email** (Фильтр по полю email)

#### Выходные параметры

* *String* **Email** (Email покупателя)
* *String* **Hash** (Пароль доступа)
* *Integer* **Period** (Период подписки)
* *DateTime* **AccessExpirationDate** (Дата окончания доступа)
* *DateTime* **DatePurchase** (Дата покупки)

Пример запроса:

```text
https://boomstream.com/api/ppv/listbuyers?apikey=[API_KEY]&code=X150Kl1d&media=xxxxxxxx&email=buyer@example.com&ver=1.1
```

Пример ответа:

```xml
<Response>
  <Items>
    <Item>
      <Email>example@example.com</Email>
      <Hash>123456789</Hash>
      <Period>30</Period>
      <AccessExpirationDate>2018-12-12 23:59:00</AccessExpirationDate>
      <DatePurchase>2015-01-29 15:05:58</DatePurchase>
    </Item>
  </Items>
  <Status>Success</Status>
</Response>
```

## contacts

*Показать контакты продавца*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)

#### Выходные параметры

* *String* **name** (Имя продавца)
* *String* **phone** (Телефон продавца)
* *String* **email** (Email магазина)
* *String* **site** (Сайт магазина)
* *String* **description** (Описание магазина)

Пример запроса:

```text
https://boomstream.com/api/ppv/contacts?apikey=[API_KEY]
```

Пример ответа:

```xml
<Response>
  <Name>Alex</Name>
  <Phone>+0 000 000 000</Phone>
  <Email/>
  <Site/>
  <Description/>
  <Status>Success</Status>
</Response>
```

## updatecontacts

*Обновление контактов продавца*

#### Входные параметры

Обязательные параметры:

* *String* **apikey** (API ключ)
* *String* **name** (Имя продавца)

Обязательные параметры (частично опциональны):

* *String* **phone** (Телефон продавца)
* *String* **email** (Email продавца)

Необязательные параметры:

* *String* **site** (Сайт магазина)
* *String* **description** (Описание магазина)

#### Выходные параметры

* *String* **name** (Имя продавца)
* *String* **phone** (Телефон продавца)
* *String* **email** (Email магазина)
* *String* **site** (Сайт магазина)
* *String* **description** (Описание магазина)

Пример запроса:

```text
https://boomstream.com/api/ppv/updatecontacts?apikey=[API_KEY]&name=Alex&phone=+0%20000%20000%20000
```

Пример ответа:

```xml
<Response>
  <Name>Alex</Name>
  <Phone>+0 000 000 000</Phone>
  <Email/>
  <Site/>
  <Description/>
  <Message>Updated success</Message>
  <Status>Success</Status>
</Response>
```
