# json
:::warning

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

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

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

Осуществляется с помощью POST-запроса. Название операции и набор принимаемых полей настраиваются в системе Майндбокс. Подробней про вызов метода можно прочитать [здесь](https://developers.mindbox.ru/docs/v3).

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

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

{
    "customer": {
        "authenticationTicket": "{Секретный тикет}",
        "ids": {
            "webSiteUserId": "{Идентификатор клиента}"
        },
        "email": "{Емэйл клиента}",
        "mobilePhone": "{Мобильный телефон}",
        "lastName": "{Фамилия клиента}",
        "firstName": "{Имя клиента}",
        "birthDate": "{Дата рождения в формате YYYY-MM-DD}",
        "password": "{Пароль}",
        "subscriptions": [
            {
                "pointOfContact": "{Канал коммуникации Email/SMS/тд}",
                "topic": "{Тематика рассылок}",
                "isSubscribed": "{Статус подписки true/false}"
            }
        ],
        "customFields": {
            "Дополнительное поле": "{Значение дополнительного поля}"
        }
    }
}
```

Секретный тикет нужен, если сервис вызывается без секретного ключа напрямую с клиента. Его можно сформировать самостоятельно по алгоритму описанному [здесь](https://developers.mindbox.ru/docs/%D1%82%D0%B8%D0%BA%D0%B5%D1%82-%D0%B4%D0%BB%D1%8F-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-%D0%BD%D0%B0-%D1%81%D0%B0%D0%B9%D1%82%D0%B5)\
Также он может понадобится, если потребитель не аутентифицирован и переходит из письма по секретной ссылке. Тогда тикет берется из ссылки.

Чтобы затереть поле, надо передать значение `%CLEAR%`. Например: `"mobilePhone": "%CLEAR%"`

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

<Tabs defaultValue="data_editing" className="w-full">
  <ScrollArea className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="data_editing">Редактирование данных в личном кабинете</TabsTrigger>
      <TabsTrigger value="data_editing_ticket">Редактирование данных с аутентификацией по тикету</TabsTrigger>
      <TabsTrigger value="password_change">Замена пароля на новый с помощью секретной ссылки</TabsTrigger>
      <TabsTrigger value="clear">Очистка данных клиента</TabsTrigger>
    </TabsList>
  <ScrollBar orientation="horizontal" />
  </ScrollArea>
    <TabsContent value="data_editing">
```json 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=EditCustomer

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

{
    "customer": {
        "ids": {
            "bitrixId": "346257"
        },
        "email": "pivan@mindbox.ru",
        "mobilePhone": 79374134389,
        "lastName": "Петров",
        "firstName": "Иван",
        "password": "Qwerty",
        "customFields": {
            "city": "Mосква",
            "b2b": true
        },
        "subscriptions": [
            {
                "pointOfContact": "Sms",
                "topic": "Recommendation",
                "isSubscribed": false
            },
            {
                "pointOfContact": "Email",
                "topic": "Recommendation",
                "isSubscribed": true
            }
        ]
    }
}
```
  </TabsContent>
  <TabsContent value="data_editing_ticket">
```json 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=EditCustomer

Accept: application/json
Content-Type: application/json

{
    "customer": {
        "authenticationTicket": "56D6169641757468656E74696361746|CA49A96250AB940A81C1E48BEF66BC48B8711",
        "email": "pivan@mindbox.ru",
        "mobilePhone": 79374134389,
        "lastName": "Петров",
        "firstName": "Иван",
        "customFields": {
            "city": "Mосква",
            "b2b": true
        },
        "subscriptions": [
            {
                "pointOfContact": "Sms",
                "topic": "Recommendation",
                "isSubscribed": false
            },
            {
                "pointOfContact": "Email",
                "topic": "Recommendation",
                "isSubscribed": true
            }
        ]
    }
}
```
  </TabsContent>
  <TabsContent value="password_change">
```json 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=EditCustomer

Accept: application/json
Content-Type: application/json

{
    "customer": {
        "authenticationTicket": "56D6169641757468656E74696361746|CA49A96250AB940A81C1E48BEF66BC48B8711",
        "password": "Qwerty123"
    }
}
```
  </TabsContent>
  <TabsContent value="clear">
```json 
POST https://api.mindbox.ru/v3/operations/async?endpointId=MindboxRu&operation=EditCustomer

Accept: application/json
Content-Type: application/json
Authorization: Mindbox secretKey="{Секретный ключ}"

{
    "customer": {
        "ids": {
            "bitrixId": "346257"
        },
        "email": "%CLEAR%",
        "mobilePhone": "%CLEAR%",
        "lastName": "%CLEAR%",
        "firstName": "%CLEAR%",
        "password": "%CLEAR%",
        "customFields": {
            "city": "%CLEAR%",
            "b2b": "%CLEAR%"
        }
    }
}
```
  </TabsContent>
</Tabs>

