# Реферальная программа
:::warning

 В инструкции описаны **примеры** POST-запросов. Интеграция с Mindbox не будет работать, если использовать запросы из примеров ниже без редактирования.

 Операции именно под вашу задачу создает и описывает в техническом задании менеджер проекта, если у вас нет такого документа, то обратитесь к вашему менеджеру.
:::

## Описание метода

Осуществляется с помощью POST-запроса. Название операции и набор принимаемых полей настраиваются в системе Mindbox. Подробней про вызов метода можно прочитать [здесь](https://developers.mindbox.ru/docs/v3). Настройки реферальной программы описаны в [статьях](https://help.mindbox.ru/docs/%D1%80%D0%B5%D1%84%D0%B5%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0).

```xml title="Универсальная операция"
POST https://api.mindbox.ru/v3/operations/{синхронная/асинхронная операция}?endpointId={уникальный идентификатор сайта/мобильного приложения/и т.п.}&operation={название операции}&deviceUUID={уникальный идентификатор устройства}

Accept: application/xml
Content-Type: application/xml
Authorization: SecretKey {Секретный ключ, обязательность уточнить у менеджера}

<operation>
  <customer>
    <ids>
      <webSiteUserId>{Идентификатор приглашенного клиента}</webSiteUserId>
      <referralCode>{Реферальный код, который позже приглашенный потребитель сможет слать своим друзьям}</referralCode>
    </ids>
    <email>{Емэйл приглашенного клиента}</email>
    <mobilePhone>{Мобильный телефон приглашенного клиента}</mobilePhone>
    <lastName>{Фамилия клиента приглашенного клиента}</lastName>
    <firstName>{Имя клиента приглашенного клиента}</firstName>
    <birthDate>{Дата рождения приглашенного клиента в формате YYYY-MM-DD}</birthDate>
    <area>
      <ids>
        <externalId>{Идентификатор региона приглашенного клиента}</externalId>
      </ids>
    </area>
    <subscriptions>
      <subscription>
        <pointOfContact>{Канал коммуникации Email/SMS/тд}</pointOfContact>
        <topic>{Тематика рассылок}</topic>
        <isSubscribed>{Статус подписки true/false}</isSubscribed>
        <valueByDefault>{Значение поля подписки по умолчанию true/false</valueByDefault>
      </subscription>
    </subscriptions>
    <customFields>
      <Дополнительное поле>{Значение дополнительного поля}</Дополнительное поле>
    </customFields>
  </customer>
  <referencedCustomer>
    <ids>
      <referralCode>{Реферальный код клиента, который пригласил друга}</referralCode>
      <mindboxId>{Id клиента, который пригласил друга}</mindboxId>
      <webSiteUserId>{Идентификатор на сайте клиента, который пригласил друга}</webSiteUserId>
    </ids>
    <email>{Емэйл клиента, который пригласил друга}</email>
    <mobilePhone>{Мобильный телефон клиента, который пригласил друга}</mobilePhone>
  </referencedCustomer>
</operation>
```

В `referencedCustomer` надо передавать потребителя, который уже есть в системе. В `customer` передаем потребителя, которого хотим добавить. Не важно сам он регистрируется, или его приглашает друг.\
За генерацию реферальных кодов отвечает клиент. Нужно просто передавать реферальный код при регистрации потребителя. В качестве кода можно использовать любой идентификатор потребителя или даже его контакт.

## Примеры операции

<Tabs defaultValue="registration" className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="registration">Регистрация по реферальному коду</TabsTrigger>
      <TabsTrigger value="invitation">Приглашение друга</TabsTrigger>
    </TabsList>
  <TabsContent value="registration">
```xml 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=RegistartionByReferrealCode

Accept: application/xml
Content-Type: application/xml
Authorization: SecretKey D061p764m85bklq

<operation>
  <customer>
    <ids>
      <referralCode>ASDFG</referralCode>
    </ids>
    <email>pivan@mindbox.ru</email>
    <mobilePhone>79374134389</mobilePhone>
    <lastName>Петров</lastName>
    <firstName>Иван</firstName>
  </customer>
  <referencedCustomer>
    <ids>
      <referralCode>QWERTY</referralCode>
    </ids>
  </referencedCustomer>
</operation>
```
  </TabsContent>
  <TabsContent value="invitation">
```xml 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=InviteFriend

Accept: application/xml
Content-Type: application/xml
Authorization: SecretKey D061p764m85bklq

<operation>
  <customer>
    <email>pivan@mindbox.ru</email>
    <firstName>Иван</firstName>
  </customer>
  <referencedCustomer>
    <ids>
      <mindboxId>12345</mindboxId>
    </ids>
  </referencedCustomer>
</operation>
```
  </TabsContent>
</Tabs>


## Ответ

<Tabs defaultValue="true" className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="true">В случае успешной регистрации (приглашения)</TabsTrigger>
      <TabsTrigger value="false">Если реферальный код (приглашающий потребитель) не найден</TabsTrigger>
    </TabsList>
  <TabsContent value="true">
```xml 
<result>
    <status>Success</status>
    <customer>
    	<processingStatus>Created</processingStatus>
    </customer>
    <referencedCustomer>
    	<processingStatus>Found</processingStatus>
    </referencedCustomer>
</result>
```
  </TabsContent>
  <TabsContent value="false">
```xml 
<result>
    <status>Success</status>
    <customer>
    	<processingStatus>NotProcessed</processingStatus>
    </customer>
    <referencedCustomer>
    	<processingStatus>NotFound</processingStatus>
    </referencedCustomer>
</result>
```
  </TabsContent>
</Tabs>