Перейти к содержанию

09. Подписки

Версия 1.14.0
Количество листов

Оглавление

История изменений

№:1 Дата: 25.08.2025 Автор: Демкович Александр RFC: RPL-1051 Версия: 0.1.0
Добавлено:
• Требование мультиязычности для параметров "Подписки": Дескриптор
• Заголовок
• Описание
• Заголовок списка возможностей
• Список возможностей.
• Требование мультиязычности для параметров "Плана подписки": Заголовок
• Заголовок блока промокод
• Описание блока промокод.
• Требование мультиязычности для "Периода" плана подписки.
№:2 Дата: 30.09.2025 Автор: Ляшук Андрей RFC: RPL-1295 Версия: 1.0.0
Добавлено:
• FR_09_1_1
• FR_09_1_2.
№:3 Дата: 03.10.2025 Автор: Ляшук Андрей RFC: RPL-1451 Версия: 1.1.0
Добавлено:
"1.1.3 Параметры контента подписки(subscription_contents)".

Изменено:
• В "1.1.1 Параметры подписки(subscriptions)" удалены параметры: "descriptor"
• "title"
• "description"
• "value"
• "title_features_list"
• "features_list".
№:4 Дата: 15.10.2025 Автор: Ляшук Андрей RFC: RPL-1553 Версия: 1.2.0
Добавлено:
• "1.1.4 Параметры цены плана подписки(subscription_plan_prices)"
• "1.2.1 Процедура получения подписки".

Изменено:
• В "1.1.2 Параметры плана подписки(subscription_plans)" удалены параметры: "stripe_price_id"
• "discount_percentage"
• "cost_month"
• "discount_cost_month"
• "pro_cost_month"
• "discount_pro_cost_month"
• "total_cost"
• "stripe_promotion_code"
• "cost_with_promotion_code".
№:5 Дата: 22.10.2025 Автор: Ляшук Андрей RFC: RPL-1580 Версия: 1.3.0
Изменено:
• В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлены параметры: "stripe_product_name"
• "stripe_price_nickname"
• "stripe_amount_total"
• "stripe_coupon_id"
• "stripe_promotion_code_id"
• "changed_at".
№:6 Дата: 22.10.2025 Автор: Ляшук Андрей RFC: RPL-1581 Версия: 1.4.0
Добавлено:
"2.1.2 Параметры изменения подписки(user_subscription_changes)".
№:7 Дата: 22.10.2025 Автор: Ляшук Андрей RFC: RPL-1620 Версия: 1.5.0
Изменено:
В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлен параметр "stripe_billing_date".
№:8 Дата: 19.11.2025 Автор: Ляшук Андрей RFC: RPL-1847 Версия: 1.6.0
Изменено:
• В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлены параметры: "stripe_plan_id"
• "stripe_coupon_percent_off".
№:9 Дата: 08.12.2025 Автор: Ляшук Андрей RFC: RPL-1775 Версия: 1.7.0
Добавлено:
• "1.1.5 Параметры города подписки(subscription_cities)"
• "1.1.6 Параметры доступности подписки для бизнеса (subscription_business_access)".

Изменено:
• В "1.1.1 Параметры подписки(subscriptions)" добавлены параметры: "type"
• "settings"
• "is_active".
• Уникальный индекс — type, is_active = true
• Структура данных параметра "settings" — 09_1.1.1_1.
№:10 Дата: 15.12.2025 Автор: Ляшук Андрей RFC: RPL-2021 Версия: 1.7.0
Изменено:
• В "1.1.1 Параметры подписки(subscriptions)": Исключён параметр "settings"
• Исключена структура данных параметра "settings" — 09_1.1.1_1.
• Изменён уникальный индекс — type, is_active = true на type = default, is_active = true
• Добавлен уникальный индекс "display_priority, is_active = true"
• Добавлены параметры: display_priority
• charge_type
• trial_period_days
• is_dismissible
• available_days.
• В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлен параметр "is_trial_canceled_on_free_collabs_completion".
№:11 Дата: 25.12.2025 Автор: Ляшук Андрей RFC: RPL-2107 Версия: 1.8.0
Добавлено:
"1.1.7 Параметры связи контента подписки с подпиской(subscription_content_subscriptions)".

Изменено:
• В "1.1.3 Параметры контента подписки(subscription_contents)": Добавлены параметры: "title_for_page"
• "subtitle_for_page"
• "subscription_action_button_text".
• У параметра "subscription_type" добавлено возможное значение "renew"
• Удалён параметр: "subscription_id".
• В "1.2.1 Процедура получения подписки" добавлено условие для передачи "Контента подписки", если "subscription_type" равен "renew".
• В "1.1.1 Параметры подписки(subscriptions)" к уникальному индексу type = default, is_active = true, добавлен параметр subscriber_type.
№:12 Дата: 28.01.2026 Автор: Ляшук Андрей RFC: RPL-2222 Версия: 1.9.0
Добавлено:
"1.1.8 Параметры отображения связанных подписок(subscription_display_subscriptions)".

Изменено:
• В "1.1.1 Параметры подписки(subscriptions)": Удалён параметр view_type
• Уникальный индекс type = default, is_active = true, subscriber_type
• Добавлен параметр subscription_display_condition
• удалён индекс type = default, is_active = true, subscriber_type.
• В "1.1.4 Параметры цены плана подписки(subscription_plan_prices)" добавлены параметры: currency
• use_billing_country_currency.
• В "1.1.6 Параметры доступности подписки для бизнеса (subscription_business_access)" добавлен параметр created_at.
№:13 Дата: 21.02.2026 Автор: Ляшук Андрей RFC: RPL-2358 Версия: 1.10.0
Добавлено:
• "1.1.9 Параметры баннера подписки(subscription_banners)"
• "1.1.10 Параметры связи баннера подписки с подпиской(subscription_banner_subscriptions)".

Изменено:
• В "1.1.1 Параметры подписки(subscriptions)": Удалён параметр "charge_type"
• Добавлен параметр "collabs".
• В "2.1.1 Параметры подписки пользователя(user_subscription)": Удалён параметр "is_trial_canceled_on_free_collabs_completion"
• Добавлен параметр "collabs".
№:14 Дата: 31.03.2026 Автор: Ляшук Андрей RFC: RPL-2586 Версия: 1.11.0
Добавлено:
"1.1.11 Кастомная подписка(custom_subscriptions)".

Изменено:
• В "1.1.1 Параметры подписки(subscriptions)": Изменён параметр "type" — добавлен тип free
• Добавлен уникальный индекс subscriber_type, type = free.
• В "1.1.4 Параметры цены плана подписки(subscription_plan_prices)": Удалены параметры: "pro_cost_month"
• "discount_pro_cost_month".
№:15 Дата: 07.04.2026 Автор: Ляшук Андрей RFC: RPL-2626 Версия: 1.12.0
Изменено:
• В "1.1.1 Параметры подписки(subscriptions)" добавлены параметры: "campaigns"
• "locations"
• "collabs_per_campaign".
• В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлены параметры: "campaigns"
• "locations"
• "active_collabs".
№:16 Дата: 15.04.2026 Автор: Ляшук Андрей RFC: RPL-2507 Версия: 1.13.0
Изменено:
В "FR_09_1_2" добавлено условие, которое проверяет наличие подписки в бизнесе хотя бы у одного пользователя.
№:17 Дата: 29.06.2026 Автор: Ляшук Андрей RFC: RPL-2804 Версия: 1.14.0
Добавлено:
• В "1.1.1 Параметры подписки(subscriptions)" параметр "is_subscription_required".
• В "1.1.9 Параметры баннера подписки(subscription_banners)" параметр "type".

Изменено:
• В "09_1.2.1_1 Процедуре получения подписки" уточнено условие определения "Free-подписки" — не определяется, если для "Разрешённой подписки" выполняется "Свойство возможности скрытия подписки" — false или "Свойство блокировки доступа без подписки" — true.
№:18 Дата: 17.08.2026 Автор: Ляшук Андрей RFC: RPL-2866 Версия: 1.15.0
Изменено:
В "2.1.1 Параметры подписки пользователя(user_subscription)" добавлен параметр "stripe_current_period_start".

1. Подписка

"Подпиской" является сущность, которая содержит описание и настройки для предоставления пользователю возможности оформить подписку и получить полноценный доступ к сервису.

FR_09_1_1 Для "Инфлюэнсера" имеется "Активная подписка пользователя", если соблюдается одно из следующих условий:

  1. "Статус активности" настройки подписки инфлюэнсера:
    1. false и для "Аккаунта" инфлюэнсера:
      1. Имеется "Город инфлюэнсера", который:
        1. Не содержится в "Списке городов" настройки подписки инфлюэнсера и для Инфлюэнсера имеется "Подписка пользователя", "Статус в stripe" которой trialing / active / past_due.
      2. Не имеется "Города инфлюэнсера" и "Статус применения для инфлюэнсеров без города":
        1. true и для Инфлюэнсера имеется "Подписка пользователя", "Статус в stripe" которой trialing / active / past_due;
        2. false.
    2. true.

FR_09_1_2 Для "Представителя бизнеса" имеется "Активная подписка пользователя":

  1. Если к нему относится "Подписка пользователя", "Статус в stripe" которой trialing / active / past_due; или
  2. "Представитель бизнеса" относится к "Бизнесу", к которому относится "Представитель бизнеса", для которого имеется "Подписка пользователя", "Статус в stripe" которой trialing / active / past_due.

1.1 Данные подписки

1.1.1 Параметры подписки(subscriptions)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Дата удаления deleted_at timestamp нет нет
Источник source enum да нет Возможны следующие источники: 1 — Stripe; 2 — Apple.
Тип подписчика subscriber_type enum да нет Возможны следующие типы: 1 — influencer; 2 — business.
Тип type enum да нет Возможны следующие типы: 1 — default; 2 — additional; 3 — free.
Статус активности is_active boolean да нет Не может быть false, если "Тип" — default.
Приоритет отображения display_priority smallint нет нет Является обязательным, если "Тип" — additional.
Количество дней триала trial_period_days smallint да нет
Свойство возможности скрытия подписки is_dismissible boolean да нет
Свойство блокировки доступа без подписки is_subscription_required boolean да нет Если true — функционал сервиса недоступен без активной подписки. По умолчанию false.
Количество дней доступности подписки available_days smallint нет нет
Условие отображения экрана подписки subscription_display_condition enum да нет Возможны следующие условия отображения экрана подписки: 1 — never; 2 — after_onboarding; 3 — after_campaign_creation. По умолчанию never.
Количество коллабораций collabs smallint да нет
Количество кампаний campaigns smallint да нет По умолчанию 999.
Количество локаций locations smallint да нет По умолчанию 999.
Количество откликов active_collabs smallint да нет По умолчанию 999.
Индексы Параметры
Уникальный индекс display_priority, is_active = true
Уникальный индекс subscriber_type, type = free

1.1.2 Параметры плана подписки(subscription_plans)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Дата удаления deleted_at timestamp нет нет
Идентификатор подписки subscription_id integer да нет
Заголовок title varchar(255) да нет Является переводимым.
Период period enum да нет Возможны следующие периоды: 1 — Annually; 2 — Quarterly; 3 — Monthly.
Заголовок блока промокод promo_title varchar(255) нет нет Является переводимым.
Описание блока промокод promo_description varchar(255) нет нет Является переводимым.
1.1.2_1 Период

Локализация значений параметра:

Значение Локаль Значение
1 en Annually
es
pt
fr
2 en Quarterly
es
pt
fr
3 en Monthly
es
pt
fr

1.1.3 Параметры контента подписки(subscription_contents)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Дата удаления deleted_at timestamp нет нет
Тип подписки subscription_type enum да нет Возможны следующие типы: 1 — trial; 2 — none; 3 — renew.
Дескриптор descriptor varchar(255) да нет Является переводимым.
Заголовок title varchar(255) да нет Является переводимым.
Описание description varchar(255) да нет Является переводимым.
Стоимость value varchar(255) да нет
Заголовок списка возможностей title_features_list varchar(255) нет нет Является переводимым.
Список возможностей features_list array да нет Одномерный массив, элементом массива является строка. Является переводимым.
Заголовок для страницы title_for_page varchar(255) да нет Является переводимым.
Подзаголовок для страницы subtitle_for_page varchar(255) да нет Является переводимым.
Текст кнопки оформления подписки subscription_action_button_text varchar(255) нет нет Является переводимым.

1.1.4 Параметры цены плана подписки(subscription_plan_prices)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Идентификатор плана подписки subscription_plan_id integer да нет
Код страны плательщика billing_country_code varchar(2) нет нет Код страны. Не может иметь значение, если "Является ли ценой по умолчанию" — true.
Является ли ценой по умолчанию is_default boolean да нет Не может быть true, если имеется "Код страны плательщика".
Идентификатор стоимости в stripe stripe_price_id varchar(255) нет нет
Процент скидки discount_percentage integer нет нет
Стоимость в месяц cost_month integer да нет
Стоимость в месяц со скидкой discount_cost_month integer нет нет
Стоимость итого total_cost integer да нет
Промокод в stripe stripe_promotion_code varchar(255) нет нет
Стоимость с промокодом cost_with_promotion_code integer нет нет
Валюта currency varchar(255) нет нет
Свойство использования кода страны плательщика use_billing_country_currency boolean да нет
Индексы Параметры
Уникальный индекс subscription_plan_id, billing_country_code
Уникальный индекс subscription_plan_id, is_default = true

1.1.5 Параметры города подписки(subscription_cities)

Название Параметр Формат Обяз. Уник. Примечание
Дата создания created_at timestamp да нет
Идентификатор подписки subscription_id int да нет
Город city_id int да нет

1.1.6 Параметры доступности подписки для бизнеса (subscription_business_access)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Дата создания created_at timestamp да нет
Идентификатор подписки subscription_id int да нет
Идентификатор бизнеса business_id int да нет
Дата отказа от подписки declined_at timestamp нет нет

1.1.7 Параметры связи контента подписки с подпиской(subscription_content_subscriptions)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор подписки subscription_id int да нет
Идентификатор контента подписки subscription_content_id int да нет

1.1.8 Параметры отображения связанных подписок(subscription_display_subscriptions)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор базовой подписки basic_subscription_id int да нет
Идентификатор дополнительной подписки addon_subscription_id int да нет

1.1.9 Параметры баннера подписки(subscription_banners)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Тип баннера type enum да нет Возможны следующие типы: 1 — special_offer; 2 — locked.
Заголовок title varchar(255) да нет Является переводимым.
Подзаголовок subtitle varchar(255) да нет Является переводимым.
Текст кнопки action_button_text varchar(255) да нет Является переводимым.

1.1.10 Параметры связи баннера подписки с подпиской(subscription_banner_subscriptions)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор подписки subscription_id int да да
Идентификатор баннера subscription_banner_id int да нет

1.1.11 Кастомная подписка(custom_subscriptions)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Заголовок title varchar(255) да нет Является переводимым.
Описание description varchar(255) да нет Является переводимым.
Заголовок списка возможностей title_features_list varchar(255) нет нет Является переводимым.
Список возможностей features_list array да нет Одномерный массив, элементом массива является строка. Является переводимым.
Текст кнопки оформления подписки subscription_action_button_text varchar(255) да нет Является переводимым.
Ссылка на кнопку button_link varchar(512) да нет

1.2 CRUD Подписки

09_1.2.1_1 Процедура получения подписки

API: GET /private/subscriptions

  1. Клиентской частью сервиса выполняется запрос "Get subscriptions".
  2. Определяется "Разрешённая подписка". Рассматриваются только "Подписки" со "Статусом активности" — true, "Тип подписчика" которых соответствует роли "Пользователя", который инициировал выполнение данной процедуры:
  3. Если запрос "Get subscriptions" инициирован "Представителем бизнеса" — определяется дополнительная "Подписка" ("Тип" — additional) в следующем порядке:
    1. Имеется "Доступность подписки для бизнеса", которая относится к "Бизнесу", к которому относится данный "Представитель бизнеса", и данная "Доступность подписки для бизнеса" не имеет "Даты отказа от подписки" и "Период доступности" данной "Подписки" не истёк;
    2. Если не определена на этапе "2_a_i": имеется "Город подписки", "Город" которого совпадает с городом любой "Локации", которая относится к данному "Бизнесу", и "Период доступности" данной "Подписки" не истёк;
    3. Если не определена на этапах "2_a_i"–"2_a_ii": определяется "Подписка" с "Типом" — default.
  4. Если запрос "Get subscriptions" инициирован "Инфлюэнсером" — определяется "Подписка" с "Типом" — default.
  5. Если на одном этапе имеется несколько кандидатов — выбирается "Подписка" с наименьшим "Приоритетом отображения".
  6. "Период доступности" "Подписки" считается истёкшим, если "Количество дней доступности подписки" не равно null и "Дата создания" связанной записи + "Количество дней доступности подписки" дней не превышает текущую дату. Связанной записью является: "Доступность подписки для бизнеса" для этапа "2_a_i", "Город подписки" для этапа "2_a_ii".
  7. Определяется "Addon-подписка" — из "Связей отображения подписок", которые относятся к "Разрешённой подписке", выбирается одна доступная "Подписка" с наименьшим "Приоритетом отображения".
  8. Определяется "Free-подписка" — "Подписка" с "Типом" — free, "Тип подписчика" которой соответствует роли "Пользователя", который инициировал выполнение данной процедуры. Не определяется, если "Разрешённая подписка" имеет "Тип" — additional и выполняется хотя бы одно из условий: "Свойство возможности скрытия подписки" — false или "Свойство блокировки доступа без подписки" — true.
  9. Определяются "Планы подписок", которые удовлетворяют условиям запроса. "План подписки" удовлетворяет условиям запроса, если относится к одной из "Подписок", которая была определена на этапах "2"–"4" данной процедуры.
  10. Определяется "Контент подписок", который удовлетворяет условиям запроса. "Контент подписки" удовлетворяет условиям запроса, если относится к одной из "Подписок", которая была определена на этапах "2"–"4" данной процедуры, и "Тип подписки":
  11. trial — если для "Пользователя", который инициировал выполнение данной процедуры, не имеется "Подписки пользователя" и имеется "Возможность использования бесплатной коллаборации";
  12. renew — если для данного "Пользователя" была "Подписка пользователя" и не имеется "Активной подписки пользователя";
  13. none — если для данного "Пользователя" не имеется "Подписки пользователя" и не имеется "Возможности использования бесплатной коллаборации".
  14. Определяются "Цены планов подписок", которые удовлетворяют условиям запроса. "Цена плана подписки" удовлетворяет условиям запроса, если:
  15. Относится к одному из "Планов подписки", который был определён на этапе "5" данной процедуры;
  16. Если "Код страны для выставления счёта" "Пользователя", который инициировал выполнение данной процедуры:
    1. Соответствует "Коду страны плательщика" данной "Цены плана подписки";
    2. Не соответствует "Коду страны плательщика" ни одной из "Цен плана подписки" и значение "Является ли ценой по умолчанию" — true.
  17. На запрос "Get subscriptions" возвращается информация, которая указана на этапах "2"–"7" данной процедуры.

2. Подписка пользователя

09_2_1 Ограничения для подписки пользователя Для одного Пользователя может существовать только одна неудалённая "Подписка пользователя".

2.1 Данные подписки пользователя

2.1.1 Параметры подписки пользователя(user_subscription)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Дата удаления deleted_at timestamp нет нет
Идентификатор пользователя user_id bigint да нет
Идентификатор бизнеса business_id bigint нет нет Обязательно, если роль связанного пользователя — business_representative.
Идентификатор stripe stripe_id varchar(255) нет нет
Статус в stripe stripe_status varchar(255) нет нет
Дата окончания триала stripe_trial_end timestamp нет нет
Дата начала текущего периода stripe_current_period_start timestamp нет нет
Дата окончания текущего периода stripe_current_period_end timestamp нет нет
Валюта подписки stripe_currency varchar(255) нет нет
Стоимость подписки stripe_amount integer нет нет
Интервал подписки stripe_interval varchar(255) нет нет
Количество интервалов stripe_interval_count integer нет нет
Название тарифного плана stripe_product_name varchar(255) нет нет
Название цены stripe_price_nickname varchar(255) нет нет
Финальная сумма stripe_amount_total integer нет нет
Применённый купон stripe_coupon_id varchar(255) нет нет
Применённый промокод stripe_promotion_code_id varchar(255) нет нет
Дата изменения changed_at timestamp нет нет
Дата оплаты подписки stripe_billing_date timestamp нет нет
Идентификатор плана в stripe stripe_plan_id varchar(255) нет нет
Процент скидки купона stripe_coupon_percent_off integer нет нет
Количество коллабораций collabs smallint да нет
Количество кампаний campaigns smallint да нет По умолчанию 999.
Количество локаций locations smallint да нет По умолчанию 999.
Количество откликов active_collabs smallint да нет По умолчанию 999.

2.1.2 Параметры изменения подписки(user_subscription_changes)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Идентификатор подписки пользователя user_subscription_changes_id bigint да нет
Изменённые параметры changes json да нет Структура данных в формате JSON.