profile - instasport/club-api GitHub Wiki
Клубный профиль
При регистрации в системе Instasport у клиента создается личный профиль типа User. При вступлении в клуб у клиента создается клубный профиль типа Profile
В каждом клубе у клиента может быть несколько клубных профилей. Один основной и дополнительные. Дополнительные клубные профили используются для членов семьи.
Клиент может изменять только свой личный профиль. Клубные профили могут изменять только менеджеры клуба.
Создание клубного профиля
Порядок создания клубного профиля для клиентов не зарегистрированных в клубе:
- Показываем страницу - Принять правила клуба. На странице показываются правила клуба, условия договора и условия конфиденциальности Instasport. Необходимые данные можно получить в запросе Club
rules - текстовое поле. Правила клуба
offer - текстовое поле. Условия договора клуба
serviceAgreement - текстовое поле. Условия конфиденциальности Instasport
- После того, как клиент соглашается с правилами клуба и условиями договоров, создаем профиль в клубе. Для создания профиля в клубе необходимо быть авторизованным, иметь access token и указать клуб. В результате запроса будет создан клубный профиль.
Параметры запроса:
origin - int. Обязательный параметр, который показывает откуда совершается запрос
Сайт Instasport - 2
Сайт клуба(плагин) - 3
Телеграм бот - 4
Приложение - 5
discoverClubId - id варианта откуда клиент узнал о клубе, все варианты можно получить в запросе query Club. Необязательный параметр
mutation CreateProfile {
createProfile(origin: 3, discoverClubId: 328) {
profile {
id
firstName
lastName
gender
birthday
rules_accepted
}
}
}
- Принимаем правила клуба. Для принятий правил клуба необходимо быть авторизованным, иметь клубный профиль и указать клуб.
mutation AcceptRules {
acceptRules {
profile {
id
rules_accepted
}
}
}
Изменение клубного профиля
mutation UpdateProfile {
updateProfile() {
profile {
showInEvent
smsEnabled
emailEnabled
gcalendarEnabled
promocode
}
}
}
showInEvent - показывать в списке гостей на тренировке
smsEnabled - разрешить SMS уведомления
emailEnabled - разрешить email уведомления
gcalendarEnabled - разрешить добавлять тренировки в Google календарь
promocode - добавить промокод
Удаление клубного профиля
Удаление основного профиля
Этим методом нельзя удалить семейный профиль
mutation DeleteProfile {
deleteProfile {
ok
}
}
Удаление основного профиля и всех семейных профилей
mutation DeleteAllProfiles {
deleteAllProfiles {
ok
}
}
Удаление семейного профиля
Этим методом нельзя удалить основной профиль
mutation DeleteFamilyProfile {
deleteFamilyProfile(familyProfileId: ID) {
ok
}
}
Cоздание заявки на связь с менеджером/пробную тренировку.
Клиенты у которых нет клубного профиля и клиенты с клубным профилем со статусами "Не определено", "Зарегистрировался сам. Сайт Instasport", "Зарегистрировался сам. Сайт клуба", "Зарегистрировался сам. Телеграм бот", "Зарегистрировался сам. Приложение" могут оставлять заявку на связь з менеджером/пробную тренировку. Возможность подачи такой заявки можно определить по полю leadAllowed в клубном профиле.
Мутация для создания заявки:
Параметры
origin - int. Обязательный параметр. Канал подачи заявки. 5 для мобильного приложения, 3 для сайта клуба (плагина).
eventId - int. ID тренировки. Необязательный параметр. Используется для подачи заявки на пробную тренировку
mutation {
createLead(origin:1, eventId:716144){
profile {
id
}
}
}
Если у клиента уже есть профиль, то статус этого профиля будет изменен на "Заявка". Если у клиента нет клубного профиля, то будет создан новый профиль со статусом "Заявка".
Чтение личных данных в клубном профиле
Для доступа к личным данным в заголовке авторизации необходимо указать токен (авторизованного клиента) и клуб.
Основной профиль клиента в клубе
С помощью этой функции можно прочитать все личные данные.
query Profile {
profile {
id
phone
email
firstName
lastName
birthday
gender
manager
super
instructor
relation
account
cashbackAccount
leadStatus
leadAllowed - Bool. Показывает возможность подачи заяви на связь с менеджером
visitsCount - количетсво оплаченых тренировок в клуба за период указанный в настройках клуба
clubVisitsCount - количесто посещений клуба за период указанный в настройках клуба
}
}
Поле leadStatus
0 - Не определено
1 - Без статуса
2 - Заявка
3 - Был контакт
4 - Зарегистрировался сам. Сайт Instasport
5 - Зарегистрировался сам. Сайт клуба
6 - Зарегистрировался сам. Телеграм бот
7 - Зарегистрировался сам. Приложение
8 - Зарегистрирован менеджером
9 - Записался сам. Сайт Instasport
10 - Записался сам. Сайт клуба
11 - Записался сам. Телеграм бот
12 - Записался сам. Приложение
13 - Записан менеджером
14 - Был на пробной
15 - Оплатил тренировку
16 - Оплатил абонемент
17 - Закончился абонемент
Поле relation
0 - основной профиль
1 - член семьи
2 - друг
3 - ребенок
4 - дочь
5 - сын
6 - брат
7 - сестра
8 - мать
9 - отец
10 - муж
11 - жена
Все личные профили одного клиента
query Family {
family {
id
phone
email
firstName
lastName
birthday
gender
manager
super
instructor
relation
}
}
Все профили в клубе
Нужно указывать API Key и Club slug
Все профили в клубе всех клиентов
query Profiles {
profiles {
id
phone
email
firstName
lastName
birthday
gender
manager
super
instructor
relation
account
cashbackAccount
}
}
curl -X POST -H "Content-Type: application/json" -H "Authorization: Key Ajsgwf3SLdcGpiXLPpzc29poWermmEkR6/xNqkS4onk= test" --data '{ "query": "{ profiles {id, firstName, lastName , manager, super, instructor}}" }' https://instasport.co/api/
Профиль в клубе по ID
Нужно указывать API Key и Club slug
query Profile {
profile(id: 12345) {
id
phone
email
firstName
lastName
birthday
gender
manager
super
instructor
relation
account
cashbackAccount
}
}
Вывод кешбэка на счет клиента
Нужно указывать Access Token и Club slug
Кешбэк будет выведен на счет клиента если кешбэк счет равен или привышает порог для зачисления на счет клиента
mutation CashbackTransfer {
cashbackTransfer {
profile {
account
cashbackAccount
}
}
}
Cоздание и удаление семейных профилей
Соотношения между семейными профилями
0 - Главный аккаунт
1 - Семья
2 - Друг
3 - Ребенок
4 - Дочь
5 - Сын
6 - Брат
7 - Сестра
8 - Мать
9 - Отец
10 - Муж
11 - Жена
Создание семейного профиля
В результате запроса будет создан и возвращен новый профиль ProfileType. Главный профиль может быть только один. В тело запроса на создание семейного профиля можно добавить аватар для семейного профиля, размер изображения 600x600px
fetchBody.append("avatar", fileData.file, "image.png");
Обязательные параметры
firstName - строка. Имя нового профиля
lastName - строка. Фамилия нового профиля
relation - int. Семейное отношение к основному профилю
Необязательные параметры
gender - int. Пол нового профиля
birthday - date. Дата рождения нового профиля
mutation СreateFamilyProfile {
createFamilyProfile(firstName: "First Name", lastName: "Last Name", relation: 5, gender: 2, birthday: "2020-09-01"){
familyProfile {
id
}
}
}
Обновление семейного профиля
В результате запроса будет обновлен и возвращен профиль ProfileType. Главный профиль может быть только один. В тело запроса на создание семейного профиля можно добавить аватар для семейного профиля, размер изображения 600x600px
fetchBody.append("avatar", fileData.file, "image.png");
Обязательные параметры
familyProfileId - int. Id профиля для обновления
Необязательные параметры
gender - int. Пол нового профиля
birthday - date. Дата рождения нового профиля
firstName - строка. Имя нового профиля
lastName - строка. Фамилия нового профиля
relation - int. Семейное отношение к основному профилю
mutation UpdateFamilyProfile {
updateFamilyProfile(familyProfileId: 12345, firstName: "First Name", lastName: "Last Name", relation: 5, gender: 2, birthday: "2020-09-01"){
familyProfile {
id
}
}
}
Удаление семейного профиля
В результате запроса профиль с указанным ID будет удален. Главный профиль нельзя удалить. Профили с посещениями и активированными абонементами невозможно удалить.
Обязательные параметры
familyProfileId - int. Id профиля к удалению
mutation {
deleteFamilyProfile(familyProfileId: 95022){
ok
}
}