# Получение сегментов клиента
:::warning

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

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

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

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

<Tabs defaultValue="xml" className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="xml">XML</TabsTrigger>
      <TabsTrigger value="json">JSON</TabsTrigger>
      <TabsTrigger value="js">JavaScript</TabsTrigger>
    </TabsList>
  <TabsContent value="xml">
```xml 
POST https://api.mindbox.ru/v3/operations/{синхронная/асинхронная операция}?endpointId={уникальный идентификатор сайта/мобильного приложения/и т.п.}&operation={название операции}&deviceUUID={уникальный идентификатор устройства}

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

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

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

{
  "customer": {
    "ids": {
      "website": "<Идентификатор клиента на сайте>"
    }
  },
  "segmentations": [
    {
      "ids": {
        "externalId": "<Внешний идентификатор cегментации 1>"
      }
    },
    {
      "ids": {
        "externalId": "<Внешний идентификатор cегментации 2>"
      }
    }
  ]
}
```
   </TabsContent>
  <TabsContent value="js">
```javascript
mindbox("sync", {
  operation: "<Название операции>",
  data: {
    customer: {
      ids: {
        website: "<Идентификатор клиента на сайте>"
      }
    },
    segmentations: [
      {
        ids: {
          externalId: "<Внешний идентификатор cегментации 1>"
        }
      },
      {
        ids: {
          externalId: "<Внешний идентификатор cегментации 1>"
        }
      }
    ]
  },
  onSuccess: <Функция, вызываемая в случае успеха>,
  onError: <Функция, вызываемая в случае ошибки>
});
```
   </TabsContent>
</Tabs>

Сегментации, которые нужно получить, можно:

* либо передавать в запросе явно
* либо настроить в операции (тогда узел `segmentations` передавать не надо)

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

<Tabs defaultValue="xml" className="w-full">
  <ScrollArea className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="xml">По Id клиента (XML)</TabsTrigger>
      <TabsTrigger value="json">Получение по DeviceUUID (JSON)</TabsTrigger>
      <TabsTrigger value="js">Получение по DeviceUUID, сегментации передаются в запросе (JavaScript)</TabsTrigger>
    </TabsList>
    <ScrollBar orientation="horizontal" />
  </ScrollArea>
  <TabsContent value="xml">
```xml 
POST https://api.mindbox.ru/v3/operations/sync?endpointId=MindboxRu&operation=GetSegments

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

<operation>
  <customer>
    <ids>
      <webSiteUserId>5384275</webSiteUserId>
    </ids>
  </customer>
</operation>
```
   </TabsContent>
  <TabsContent value="json">
```json
POST https://api.mindbox.ru/v3/operations/sync?endpointId=MindboxRu&operation=GetSegments&deviceUUID=6740eb79-8311-4518-b50c-86a879709044

Accept: application/json
Authorization: Mindbox secretKey="{Секретный ключ}"
Content-Length: 0
```
   </TabsContent>
  <TabsContent value="js">
```javascript title="Получение по DeviceUUID, сегментации передаются в запросе"
mindbox("sync", {
  operation: "GetSegmentsBySegmentationsExternalId",
  data: {
    segmentations: [
      {
        ids: {
          externalId: "703D75B5-FAB4-47C9-B348-54743F85A698"
        }
      },
      {
        ids: {
          externalId: "CDD09A98-505A-48CD-B807-E6B536BCC48B"
        }
      }
    ]
  },
  onSuccess: function(response) {
    response.customerSegmentations.forEach(function(customerSegmentation) {
      if (customerSegmentation.segmentation.ids.externalId === "703D75B5-FAB4-47C9-B348-54743F85A698") {
        if (!customerSegmentation.segment) {
        	console.log(`Потребитель не входит в сегментацию 1`);
        }
        else {
          console.log(`Потребитель входит в сегмент ${customerSegmentation.segment.ids.externalId} сегментации 1`);
        }
      }	  
      else if (customerSegmentation.segmentation.ids.externalId === "CDD09A98-505A-48CD-B807-E6B536BCC48B") {
        if (!customerSegmentation.segment) {
        	console.log(`Потребитель не входит в сегментацию 2`);
        }
        else {
        	console.log(`Потребитель входит в сегмент ${customerSegmentation.segment.ids.externalId} сегментации 2`);
        }
      }
  });
	}
});
```
   </TabsContent>
</Tabs>


## Ответ

<Tabs defaultValue="xml" className="w-full">
    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="json">JSON</TabsTrigger>
      <TabsTrigger value="xml">XML</TabsTrigger>
    </TabsList>
  <TabsContent value="xml">
```xml
<result>
  <status>Success</status>
  <customerSegmentations>
    <customerSegmentation>
      <segmentation>
        <ids>
          <externalId>{Внешний идентификатор сегментации}</externalId>
        </ids>
        <name>{Имя сегментации}</name>
      </segmentation>
      <segment>
        <ids>
          <externalId>{Внешний идентификатор сегмента}</externalId>
        </ids>
        <name>{Имя сегмента}</name>
      </segment>
    </customerSegmentation>
    <customerSegmentation>
      <segmentation>
        <ids>
          <externalId>{Внешний идентификатор сегментации}</externalId>
        </ids>
        <name>{Имя сегментации}</name>
      </segmentation>
    </customerSegmentation>
  </customerSegmentations>
</result>
```
   </TabsContent>
  <TabsContent value="json">
```json
{
  "status": "Success",
  "customerSegmentations": [
    {
      "segmentation": {
        "ids": {
          "externalId": "<Внешний идентификатор сегментации>"
        },
        "name": "<Имя сегментации>"
      },
      "segment": {
        "ids": {
          "externalId": "<Внешний идентификатор сегмента>"
        },
        "name": "<Имя сегмента>"
      }
    },
    {
      "segmentation": {
        "ids": {
          "externalId": "<Внешний идентификатор сегментации>"
        },
        "name": "<Имя сегментации>"
      }
    }
  ]
}
```
   </TabsContent>
</Tabs>

Отсутствующий `segment` означает, что клиент не входит в сегментацию.\
Отсутствующий `customerSegmentations` означает, что клиент не был найден по переданному идентификатору.